一回も披露したことのない豆知識

VB2010Expressを使用しています。
VBにてあるCSVファイルの内容をmdbファイルに移行するプログラムを作成しています
DateTimePickerの日付を条件にしているんですがCSVの日付表記が『yyyymmdd』になっていて下記のコードでは『 (Me.Date日付.Text).ToString("yyyyMMdd")』の部分で『'String' から 'System.IFormatProvider' への変換時にランタイム エラーが発生する可能性があります。』とエラーが出ます。

自宅PCでは『(Me.Date日付.Text).ToString("yyyyMMdd")』を『DateAdd("d", 0, Me.Date健診日.Text).ToString("yyyyMMdd")』にしたらエラーなく動いたのですが、今日職場のPCで検証したら『型が合いません的なエラーが出てしまいます。(日付部分でのエラーみたいなのですが職場でのエラーをメモし忘れました、スイマセン)

日付のフォーマット変更そしてPCの違いによるエラーの発生原因についてご教授お願いします。

Try
Dim DT As New DataTable
'===============CSVからクエリ===============
Using OleCn As New System.Data.OleDb.OleDbConnection
OleCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _
";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited"""
Dim SQL As String = ""
SQL = "SELECT * FROM " + CSVFileName + " WHERE 日付 BETWEEN " + DateAdd("d", -1, Me.Date日付.Text).ToString("yyyyMMdd") + " AND " + (Me.Date日付.Text).ToString("yyyyMMdd")
Using DA As System.Data.OleDb.OleDbDataAdapter = _
New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn)
DT.Clear()
DA.Fill(DT)
End Using
End Using
'===============CSV-importへの登録===============
コード省略
Catch ex As Exception
MessageBox.Show(ex.ToString, "例外発生")
Exit Sub
End Try

A 回答 (1件)

> DateAdd("d", -1, Me.Date日付.Text).ToString("yyyyMMdd") + " AND " + (Me.Date日付.Text).ToString("yyyyMMdd")


DateAddの第3引数をDateTime型に変換して与えたほうがいいのでは

DateAdd("d", -1, DateTime.Parse(Me.Date日付.Text)).ToString("yyyyMMdd") + " AND " _
DateTime.Parse(Me.Date日付.Text).ToString("yyyyMMdd")

といった具合です
    • good
    • 1
この回答へのお礼

ありがとうございます。
勉強になりました。

原因として一回Excelで読んで上書きしたせいでデータ型が変わったようです(汗)

お礼日時:2012/02/27 22:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!