- - PR -
VB.netでDataSet()について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-20 22:18
VB.netで、Access.mdbからデータを読み込むプログラムを作成しているのですが、
検索するプログラムがうまくいきません。 ********************************************************************** Private dataset As New DataSet() Private olecn As New OleDb.OleDbConnection() Private adapter As New OleDb.OleDbDataAdapter() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click dataset.Tables("Table").Clear() dataset=SearchSelectCommand("ID", Searchtext.text,"Table") If dataset.Tables("Table").Rows.Count = 0 Then '見つからなかった場合の処理 msgbox("見つかりませんでした") End If End Sub Function SearchSelectCommand(ByVal str As String, ByVal searchWord As String, ByVal TableName As String) As DataSet adapter.SelectCommand = New System.Data.OleDb.OleDbCommand("select * from [" & TableName & "] where " & str & " LIKE " & """*" & searchWord & "*""", olecn) Dim dt As New DataSet() dt.Tables.Add(New DataTable("Table")) Try adapter.Fill(dt.Tables(TableName)) Catch ex As Exception MsgBox(ex.ToString) End Try return dt End Function **************************************************************** AccessのクエリでSQL文を実行してみたところ、うまくいったので 問題はDataSetだと思うのですがよくわかりません・・・ どなたか教えていただけないでしょうか。 よろしくおねがいします。 [ メッセージ編集済み 編集者: delicho 編集日時 2005-05-20 22:18 ] | ||||||||
|
投稿日時: 2005-05-21 00:41
どこで、どんなエラーが出るか書かないとなんとも・・・
これ必要ですか? [ メッセージ編集済み 編集者: ほげた 編集日時 2005-05-21 00:42 ] | ||||||||
|
投稿日時: 2005-05-21 08:39
以下のように書き換えてみてください。 ADO.NETは、「*」の代わりに「%」を使用します。
_________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||||||
|
投稿日時: 2005-05-21 11:21
>>ほげたさん
>dataset.Tables("Table").Clear() を入れないと検索ワードに何を入れても必ずtrueが返って来るんです。 >どこで、どんなエラーが出るか書かないとなんとも・・・ エラーはでないのですが検索が必ず失敗するんです。 Try adapter.Fill(dt.Tables(TableName)) Catch ex As Exception MsgBox(ex.ToString) End Try ここの下に MsgBox(dataset.Tables("Table").Rows(0).Item("ID")) というコードを挿入すると、位置0に行がありません。という例外が投げられます・・・ コマンドウインドウで確認しましたが、たしかに要素はありませんでした。 検索が失敗してるかもしくはDataSetに原因があると思ったんです。 でもAccessのクエリでこのSQL文を実行するとちゃんと表示されるみたいなんです。 >>Accessさん *を%に変えてみましたが同じ結果でした・・・ | ||||||||
|
投稿日時: 2005-05-21 14:16
SQLの文字列はシングルクォーテーション。ダブルクォーテーションは列名。
_________________ | ||||||||
|
投稿日時: 2005-05-21 23:32
>>Jittaさん
'でやったら解決しました。 ありがとうございました。 |
1