CSVファイルを読み込むには??

解決


いちご  2004-05-14 19:19:05  No: 113242  IP: [192.*.*.*]

VB6.0で住所録を作成しているのですが、データをコンボボックで読み込みたい時は、どうしたら宜しいですか??
(ちなみにコンボボックスで選択した個人データを、ラベルに表示出来るようにしたいです。)

どなたかお分かりの方が、いらっしゃいましたらご回答の程、宜しくお願いいたします。

編集 削除
Say  2004-05-15 00:43:56  No: 113243  IP: [192.*.*.*]

csvだろうとComboBoxだろうとファイル処理は
基本的に同一です。
流れは
●ファイルをリードモードでオープン
●エンドオブファイルまでループ
●1行読み込み
●ComboBoxへAddItem
●ループエンド
●ファイルクローズ

読み込みに関しては、Input#でカンマで区切った項目を
カンマで区切った変数に読み込む方法と、
Line Input#で1行一括読み込みし、
カンマをデリミタとしてSplitで分割する方法があります。
行によって項目数が異なる場合は
後者のほうが対応しやすいでしょう。

ま、しかし、参照系に限るなら
csvをテキストデータベースとして開き、
データコンボあたりに表示したほうがいいかもしれません。

編集 削除
いちご  2004-05-17 18:44:42  No: 113244  IP: [192.*.*.*]

返事が送れてすいません。
教えていただいていて、とても言いにくいのですが、
簡単なもので結構ですので、文を書いていただけると幸いです、、、

わがまま言って申し訳ありませんが、宜しくお願い致します。
甘えてすいません。VB初心者なもので。。。

編集 削除
いちご  2004-05-17 18:51:08  No: 113245  IP: [192.*.*.*]

ちなみにVBA(エクセル)ではこーゆー流れのものです。↓↓

Private Sub ComboBox1_Change()
    Dim Target As Long
    Dim myDate As String '指定日付
    Dim Days As String '間隔(日)
    Dim today As String
    
    today = Format(Now(), "ggge年m月d日")
    'Sheet1.Cells(Target + 2, 13) = today
    Target = ComboBox1.ListIndex
    
    If Cells(Target + 2, 9) = "" Then '*免許を持っていない場合*
       Label19 = "無期限" '*無期限と表示*
       Label21 = "***日" '*残数を***日とする*
    Else
       myDate = Cells(Target + 2, 9).Value
       Label19 = Format(myDate, "ggge年m月d日")
       Sheet1.Cells(Target + 2, 11) = DateDiff("d", Date, myDate) & "日"
       Label21 = Format(Sheet1.Cells(Target + 2, 11), "d日")
    End If
    
    Label15 = Cells(Target + 2, 2) '*名前*
    'TextBox1 = Cells(Target + 2, 2) '*名前*
    Cells(Target + 2, 1) = Label15
    Label23 = Cells(Target + 2, 3) '*フリガナ*
    Label16 = Cells(Target + 2, 4) '*現住所*
    Label17 = Cells(Target + 2, 5) '*連絡先*
    Label14 = Cells(Target + 2, 6) '*携帯*
    Label18 = Cells(Target + 2, 7) '*アドレス*
    Label20 = Format(Cells(Target + 2, 10), "ggge年m月d日")     '*写真撮影日*
    If Dir(Cells(Target + 2, 8)) <> "" Then '*if文。画像の有無*
      Image1.Picture = LoadPicture(Cells(Target + 2, 8)) '*画像があるとき:指定ファイルを表示*
    Else
      Image1.Picture = LoadPicture() '*画像がないとき:無表示*
  End If
End Sub

編集 削除
いちご  2004-05-18 18:38:10  No: 113246  IP: [192.*.*.*]

コマっています。

上記の内容が分かる方がいらっしゃいましたら、宜しくお願い致します。

編集 削除
めがねのけー  2004-05-18 19:56:21  No: 113247  IP: [192.*.*.*]

いちご様が何がわからないかが、わかりません。
それを具体的に説明してください。

VBAのだいたいの流れはわかりますが、
いちご様が書かれた
>VB6.0で住所録を作成しているのですが、データを
の「データ」は何ですか?CSVファイル?それともデータベース?

編集 削除
いちご  2004-05-19 09:24:00  No: 113248  IP: [192.*.*.*]

めがねのけー様、返信ありがとうございます。


読み込みたいのものは、CSVファイルです。
CSVファイルに名前等のデータを入力しています。

編集 削除
michi  2004-05-19 10:01:02  No: 113249  IP: [192.*.*.*]

Open strFilePath For Input As #1
        Do Until EOF(1)  'ファイルの最後まで読み込み
            '1行をカンマ区切りでそれぞれ読み込む
            Input #1, str1, str2, str3,…
            '***実際の処理***
        Loop
    Close #1

とりあえずcsvを読むのならこのようにやればよいでしょう。

編集 削除
めがねのけー  2004-05-20 11:29:21  No: 113250  IP: [192.*.*.*]

よく見たら、表題がCSVって書いてあるし。(--;;;
実際、何がわからないのかはまだよくわかってませんが、
上記VBAのソースを見るに、CSVからデータをどうやってる取得するかが問題のようですね。

Say様/michi様が書かれているような処理でよさそうですね。
SQLがわかるのであれば、データベース処理を行う方が「私は」楽です。

その際のコードは本や、サイトを参考にすると良いと思います。

以下、そのままでは動くはずもありませんが、コードです。
参照設定にMicrosoft ActiveX Data Objects 2.x Libraryを指定しています。
------------------------------

Dim objAdoCon        As ADODB.Connection     'コネクション
Dim objAdoRec        As ADODB.Recordset      'レコードセット
Dim strSql           As String               'SQL文格納
Dim strCSVPath       As String               'CSVパス
'----------------------------------------------------

strCSVPath = "C:\TEMP\TEST.CSV"

Set objAdoCon = New ADODB.Connection
Set objAdoRec = New ADODB.Recordset

objAdoCon.ConnectionString = _
        "Provider=MSDASQL.1;" & _
        "Extended Properties=""" & _
        "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "DBQ=" & strCSVPath & """"           '接続
objAdoCon.Open                               'オープン
    
objAdoRec.CursorType = adOpenForwardOnly     'カーソルタイプ
objAdoRec.LockType = adLockReadOnly          'ロックタイプ

strSql = "SELECT * FROM TEST_TABLE"

Set objAdoRec = objAdoCon.Execute(strSql)    'SQL実行

Label1.Caption = objAdoRec.Fields(0).Value

objAdoRec.Close
objAdoCon.Close
Set objAdoRec = Nothing
Set objAdoCon = Nothing

編集 削除
いちご  2004-05-20 13:34:58  No: 113251  IP: [192.*.*.*]

michi様・めがねのけー様  ありがとうございます。

SQLは分からないので、michi様に教えて頂いたコードを参考に頑張ってみたいと思います。
また分からなくなった時は、ココに書き込みをしたいと思いますので、その際は宜しくお願いします。

編集 削除
いちご  2004-05-21 17:28:12  No: 113252  IP: [192.*.*.*]

何とかできそうです。

ありがとうございましたm(__)m

編集 削除