- モンジ
- ベテラン
- 会議室デビュー日: 2005/09/06
- 投稿数: 85
|
投稿日時: 2005-12-14 10:47
こんにちは。
いつもお世話になっています。
ウィザードにて、(まだ.NETを使い始めたばかりなので、ウィザードを利用しています)DataAdapter、DataSetを作成し、Form上のDataGridにて表示しています。
ただ、日付でソートできるように、Form上に、DateTimePickerを設置し、ValuChengedイベントにて、自動生成されたSelectCommandのSQLを書き換えたところ、『一つ以上の必要なパラメータが設定されていません』という表示が出てしまいます。
以下にソースを載せておきます。アドヴァイスお願いします。
Me.OleDbSelectCommand2.CommandText = "SELECT 発注NO, 品名, ロットNO, 入荷予定日, 入荷実績日, 発注数, 入荷実績数, 備考, [オーダNO] FROM TNYUKA " & _
"where 入荷予定日 = @CalDate"
Me.OleDbDeleteCommand2.Parameters.Add(New System.Data.OleDb.OleDbParameter("@CalDate", System.Data.OleDb.OleDbType.Date, )
Me.OleDbDeleteCommand2.Parameters("@CalDate").Value = CDate(Me.dtpDate.Text) 'dtpDateは、Form上のDateTimePicker
Me.OleDbSelectCommand2.Connection = Me.OleDbConnection1
OleDbDataAdapter2.Fill(DataSet11)
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-12-14 12:53
引用: |
|
モンジさんの書き込み (2005-12-14 10:47) より:
コード: |
|
Me.OleDbSelectCommand2.CommandText = "SELECT 発注NO, 品名, ロットNO, 入荷予定日, 入荷実績日, 発注数, 入荷実績数, 備考, [オーダNO] FROM TNYUKA " & _
"where 入荷予定日 = @CalDate"
Me.OleDbDeleteCommand2.Parameters.Add(New System.Data.OleDb.OleDbParameter("@CalDate", System.Data.OleDb.OleDbType.Date, 8))
Me.OleDbDeleteCommand2.Parameters("@CalDate").Value = CDate(Me.dtpDate.Text) 'dtpDateは、Form上のDateTimePicker
Me.OleDbSelectCommand2.Connection = Me.OleDbConnection1
OleDbDataAdapter2.Fill(DataSet11)
|
|
パラメータをセットするところが、OleDbDeleteCommand2 に変わってますが、問題ないのですか?
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- モンジ
- ベテラン
- 会議室デビュー日: 2005/09/06
- 投稿数: 85
|
投稿日時: 2005-12-15 09:29
じゃんぬねっとさん
大変申し訳ありませんでした!!
恥ずかしいというか情けないというか。
ご指摘のとおりです。
また、もう一つどうしても分からない箇所があるのです。
ワイルドカード検索がうまくいきません。
SQLのwhere以下を、
発注NO like '%@HacchuNo%' → 何も抽出されず
発注NO like %@HacchuNo% → 何も抽出されず
発注NO like @HacchuNo → イコールのみ抽出
SQLの書き方が問題でしょうか?
因みに環境は、VB.NET2003、データベースはAccess97です。
Me.OleDbSelectCommand2.CommandText = "SELECT 発注NO, 品名, ロットNO, 入荷予定日, 入荷実績日, 発注数, 入荷実績数, 備考, [オーダNO] FROM TNYUKA " & _
"where 発注NO Like '%@HacchuNo%'"
Me.OleDbSelectCommand2.Parameters.Add(New System.Data.OleDb.OleDbParameter("@HacchuNo", System.Data.OleDb.OleDbType.Date, )
Me.OleDbSelectCommand2.Parameters("@HacchuNo").Value = Me.txtHacchuNo.Text
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-12-15 10:57
引用: |
|
モンジさんの書き込み (2005-12-15 09:29) より:
発注NO like '%@HacchuNo%' → 何も抽出されず
|
"%@HacchuNo%" という文字列になってます。
引用: |
|
発注NO like %@HacchuNo% → 何も抽出されず
|
パラメータである @HacchuNo と % の区別が付かないのでダメです。
引用: |
|
SQLの書き方が問題でしょうか?
因みに環境は、VB.NET2003、データベースはAccess97です。
|
Access ですか... 確認してませんが、こんな感じではないかと思います。
コード: |
|
Me.OleDbSelectCommand2.CommandText = ( _
" SELECT 発注NO, 品名, ロットNO, 入荷予定日, 入荷実績日, 発注数, 入荷実績数, 備考, [オーダNO]" & _
" FROM TNYUKA " & _
" WHERE 発注NO Like @HacchuNo" _
)
Me.OleDbSelectCommand2.Parameters.Add(New System.Data.OleDb.OleDbParameter("@HacchuNo", System.Data.OleDb.OleDbType.Date, 8)
Me.OleDbSelectCommand2.Parameters("@HacchuNo").Value = "%" & Me.txtHacchuNo.Text & "%"
|
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- でっち6号
- 大ベテラン
- 会議室デビュー日: 2005/01/31
- 投稿数: 176
- お住まい・勤務地: Kawasaki
|
投稿日時: 2005-12-15 11:20
でっちです。
Accessであればワイルドカードは「*」ではないかと思います。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-12-15 11:24
引用: |
|
でっち6号さんの書き込み (2005-12-15 11:20) より:
Accessであればワイルドカードは「*」ではないかと思います。
|
Access はどちらでも可能だったと記憶してますが、OleDb だと違うんでしょうか?
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- でっち6号
- 大ベテラン
- 会議室デビュー日: 2005/01/31
- 投稿数: 176
- お住まい・勤務地: Kawasaki
|
投稿日時: 2005-12-15 11:45
引用: |
|
じゃんぬねっとさんの書き込み (2005-12-15 11:24) より:
引用: |
|
でっち6号さんの書き込み (2005-12-15 11:20) より:
Accessであればワイルドカードは「*」ではないかと思います。
|
Access はどちらでも可能だったと記憶してますが、OleDb だと違うんでしょうか?
|
クエリで使えないだけでしたっけ?
未検証です。申し訳ありません m(_ _)m
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-12-15 12:16
引用: |
|
でっち6号さんの書き込み (2005-12-15 11:45) より:
クエリで使えないだけでしたっけ?
未検証です。申し訳ありません m(_ _)m
|
でっち6号さんに応えまして、検証してみました。
結果はというと、うまく行きました。
コード: |
|
Private Shared OneMethod()
Const CONNECTION_STRING As String = ( _
"Provider = Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Wankuma.mdb;" _
)
Dim hConnection As System.Data.OleDb.OleDbConnection
Try
hConnection = New System.Data.OleDb.OleDbConnection(CONNECTION_STRING)
Dim hCommand As System.Data.OleDb.OleDbCommand
Try
Const COMMAND_TEXT As String = ( _
"SELECT Name FROM Wankuma WHERE Name LIKE @MemberName" _
)
hCommand = New System.Data.OleDb.OleDbCommand(COMMAND_TEXT, hConnection)
hCommand.Parameters.Add( _
New System.Data.OleDb.OleDbParameter("@MemberName", System.Data.OleDb.OleDbType.VarChar, 8) _
)
hCommand.Parameters("@MemberName").Value = "%a%"
hConnection.Open()
Try
Dim hReader As System.Data.OleDb.OleDbDataReader
Try
hReader = hCommand.ExecuteReader()
While (hReader.Read())
Console.WriteLine(hReader.GetString(0))
End While
Finally
If Not hReader Is Nothing Then
hReader.Close()
End If
End Try
Finally
If Not hConnection Is Nothing
hConnection.Close()
End If
End Try
Finally
If Not hCommand Is Nothing Then
hCommand.Dispose()
End If
End Try
Finally
If Not hConnection Is Nothing Then
hConnection.Dispose()
End If
End Try
End Sub
|
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|