Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24852 / 76732 ←次へ | 前へ→

【57227】Re:CSVデータをACCESSに移行2.
発言  neptune  - 08/8/1(金) 22:20 -

引用なし
パスワード
   ▼satsuki さん:
こんにちは

私ならこんな感じと言うのを格好と流れだけ書いてみました。
でも、大体こんな感じ。

Private Enum TargetTableName
  店別来店数
  店別製品別売上数
  店別個人別売上数
End Enum

Private Type RecordData
  日付 As Date
  店名 As String
  人数 As Long
  製品名 As String
  担当名 As String
  台数 As Long
End Type

Private Sub InsertMain()
Dim Cn As ADODB.Connection
Dim cnString As String
Dim typData() As RecordData
Dim fNum As Long
Dim Ret As Boolean
Const csvpath As String = "E:\Data\Office\Access\TestData.csv"

  On Error GoTo ErrTrap
  Set Cn = New ADODB.Connection
  cnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\hogehogeDirctory\Test.mdb;" '後必要な引数加える
  Cn.ConnectionString = cnString
  Cn.Open
  
  '/////////私なら多分読み取り部分も別Functionにすると思う///////////
  fNum = FreeFile()
  'データが数MBなら全部読み込んでおく
'  ファイルオープン
'  全データ取得
'  ファイルクローズ
  'ここで必要なデータだけを取得してtypDataに入れる
  '//////////////////////////////////////////////////////////////////
  
  Ret = InSertData(店別来店数, typData, Cn)
  'データの数だけ繰り返す
  
  
  Cn.Close
  Set Cn = Nothing
  Exit Sub
ErrTrap:
  '必要なエラー処理
End Sub

Private Function InSertData(ptbl As TargetTableName, pRec() As RecordData, pCn As ADODB.Connection) As Boolean
  Dim sSQL As String
  Dim Cmd As ADODB.Command
  '引数チェック
  '手抜き
  
  '例えばSQLを投げる
  sSQL = "INSERT INTO "
  'SQL生成
  Select Case ptbl
    Case TargetTableName.店別来店数
      '個別のSQL生成
      sSQL = sSQL & TargetTableName & "(日付,店名,人数)" & _
          " VALUES(#" & pRec.日付 & "#,'" & pRec.店名 & "'," & pRec.人数 & ")"
    Case TargetTableName.店別個人別売上数
    Case TargetTableName.店別製品別売上数
  End Select
'  Commandオブジェクト生成
  'command実行
  
'  '例えばパラメータクエリをキックする
'  '私は大概こちらの方法をとります。
'  Select Case ptbl
'    Case TargetTableName.店別来店数
'       'パラメータ生成、パラメータにデータ入力
'    Case TargetTableName.店別個人別売上数
'    Case TargetTableName.店別製品別売上数
'  End Select
'  'command実行
  'commandオブジェクトの後始末
End Function

後、VBでInteger型を使うメリットはありません。最近のパソコンは
32bitか64bitですから最低でもそのメモリは消費しますから。ですから、
VBではintegerよりlongの方が無駄な変換がないだけ効率的らしいです。

0 hits

【57168】CSVデータをACCESSに移行2. satsuki 08/7/30(水) 16:13 質問
【57183】Re:CSVデータをACCESSに移行2. neptune 08/7/30(水) 22:31 発言
【57188】Re:CSVデータをACCESSに移行2. satsuki 08/7/31(木) 0:47 質問
【57189】Re:CSVデータをACCESSに移行2. かみちゃん 08/7/31(木) 0:56 発言
【57194】Re:CSVデータをACCESSに移行2. satsuki 08/7/31(木) 11:23 質問
【57196】Re:CSVデータをACCESSに移行2. かみちゃん 08/7/31(木) 12:47 発言
【57201】Re:CSVデータをACCESSに移行2. satsuki 08/7/31(木) 14:26 質問
【57207】Re:CSVデータをACCESSに移行2. neptune 08/7/31(木) 21:52 回答
【57208】Re:CSVデータをACCESSに移行2. satsuki 08/8/1(金) 1:08 発言
【57192】Re:CSVデータをACCESSに移行2. neptune 08/7/31(木) 10:25 発言
【57193】Re:CSVデータをACCESSに移行2. satsuki 08/7/31(木) 11:13 発言
【57198】Re:CSVデータをACCESSに移行2. neptune 08/7/31(木) 13:33 発言
【57209】Re:CSVデータをACCESSに移行2. satsuki 08/8/1(金) 1:14 発言
【57210】Re:CSVデータをACCESSに移行2. かみちゃん 08/8/1(金) 7:14 発言
【57222】Re:CSVデータをACCESSに移行2. satsuki 08/8/1(金) 19:37 質問
【57220】Re:CSVデータをACCESSに移行2. neptune 08/8/1(金) 16:18 発言
【57221】Re:CSVデータをACCESSに移行2. satsuki 08/8/1(金) 19:31 質問
【57225】Re:CSVデータをACCESSに移行2. かみちゃん 08/8/1(金) 21:28 発言
【57230】Re:CSVデータをACCESSに移行2. satsuki 08/8/2(土) 1:14 お礼
【57231】Re:CSVデータをACCESSに移行2. かみちゃん 08/8/2(土) 9:56 発言
【57232】Re:CSVデータをACCESSに移行2. neptune 08/8/2(土) 11:08 発言
【57227】Re:CSVデータをACCESSに移行2. neptune 08/8/1(金) 22:20 発言
【57244】Re:CSVデータをACCESSに移行2. satsuki 08/8/2(土) 18:12 お礼

24852 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free