ComboboxのデータをCSVファイルに残らないようにするには


蜍-Karasu-  2004-03-02 01:22:13  No: 112137  IP: [192.*.*.*]

コンボボックスについて質問があります。
現在、VBを用いて住所録ソフトを作っていて、
データベースソフトを使ってはいけないと言われているので
CSVファイルで住所録データを管理しています。

その住所録ソフトに、データの削除機能を実装しようとしたので
入力欄を

Text1.Text = ""
Text2.Text = ""
Combo1.ListIndex = 0

と言う感じに空欄にし、配列に読み込んだ後、CSVファイルに書き込む
と言う方法を取ったのですが、CSVファイルに0の数字が残ってしまって、
削除されず、CSVファイルにデータ項目が残ってしまいます。
コンボボックスの内容をキレイに消す方法はありませんか?

編集 削除
特攻隊長まるるう  2004-03-02 09:10:04  No: 112138  IP: [192.*.*.*]

一度、配列に読み込むのにコンボボックスの問題なんですか?。
>CSVファイルに0の数字が残ってしまって
…で残ってしまう0を書き込んでいるのが何か?そもそも何の0なのか
分からないので感じがつかめません。.ListIndex が0の時はつねに
削除データなのか?。自分で決めた条件は書いてくれないと分かりません。
>Combo1.ListIndex = 0
の時はデータが削除?(テキストが "" の時?)条件が分かっているなら
その時に配列に格納する処理を飛ばすように条件を付ければいいのでは?。

コンボボックスの Item は[VB6.0] .RemoveItem メソッド[VB.NET]
.Items.RemoveAt メソッドなどで削除できると思います。
表示だけ変える(Item をクリアし、AddItem し直す?)場合は
.ListIndex = -1 もよく使われる手法です。まぁクリアするなら必要ないですが…。

編集 削除
-Karasu-  2004-03-02 22:43:59  No: 112139  IP: [192.*.*.*]

>特攻隊長まるるうさん
丁寧なレスありがとうございます。
色々と説明不足ですいませんでした。
使用しているのはVB6.0です。
住所録の生年月日データ入力のために,ComboBoxを使っています。

フォームロード時ComboBoxに
With Combo1
.AddItem""
.AddItem"1月"
.AddItem"2月"
(中略)
.AddItem"12月"
End With
と言う感じにアイテムを加えました。
これでCombo1の0が"",  1が"1月"、と言う感じで表示するようにしました。

それで、現在表示しているデータを削除するために、
Text1.Text=""
Text2.Text=""
Combo1.ListIndex = 0

と、住所録データを表示するテキストボックスやコンボボックスを、
全部真っ白な状態にして、それを配列に読み込んで、CSVファイルに上書きする
と言う形で削除を行おうとしました。
で、見た目削除されているんですが、
実際のCSVファイルのコンボボックスの所に0って数字が残ってしまって
完全に削除されなくて困っています。

Text1.Text=""と同じように、キレイにデータを消してそれを上書きする方法を
探してます。

上のレスで教えていただいた手法だと
.ListIndex = -1 や.RemoveItemでは、CSVファイルに-1が記録されてしまいます。

編集 削除
特攻隊長まるるう  2004-03-02 23:52:10  No: 112140  IP: [192.*.*.*]

いや、だから…コンボボックスの問題でなくて、配列に0だとか
-1だとか書き込むコーディングがマズいのではないの?
とりあえず…
Dim strCSV As String
If Combo1.ListIndex <= 0 Then
    strCSV = ""
Else
    strCSV = CStr(Combo1.ListIndex)
End If

編集 削除
-Karasu-  2004-03-05 01:29:23  No: 112141  IP: [192.*.*.*]

配列に読み込む時にこうしたらいいんですね。
解決しました、ありがとうございます。

編集 削除