VB.NETとAcceseを使用してフォームの入力内容に基にボタンをしてDBにテーブルを作成するプログラムを作成していますが上手くいきません。
どのようにすれば上手くいくのか教えてください。
よろしくお願いします。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New OleDb.OleDbConnection()
Cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Application.StartupPath & "\products.mdb"
Cn.Open()
Dim mysql As New OleDb.OleDbCommand()
mysql.Connection = Cn
mysql.CommandText = "CREATE TABLE '" & TextBox1.Text & "' ('" & TextBox2.Text & "' '" & ComboBox1.Text & "' NOT NULL,'" & TextBox2.Text & "' '" & ComboBox2.Text & "','" & TextBox3.Text & "' '" & ComboBox3.Text & "',PRIMARY KEY('" & TextBox1.Text & "'))"
Cn.Close()
End Sub
No.2ベストアンサー
- 回答日時:
フィールド名がダブっていませんか?
TextBox1:テーブル名
TextBox2:フィールド名
TextBox3:フィールド名
ComboBox1:型
ComboBox2:型
TextBox2 を 2つ作ろうとしています。
もう一つ。
シングルクォーテーションを使っていますが、
テーブル名とフィールド名は [フィールド名] てな感じで。
型の部分は裸で。
総合すると、
mysql.CommandText = "CREATE TABLE [" & TextBox1.Text & "] ([" & TextBox2.Text & "] " & ComboBox1.Text & " NOT NULL,[" & TextBox3.Text & "] " & ComboBox2.Text & ",[" & TextBox4.Text & "] " & ComboBox3.Text & ",PRIMARY KEY([" & TextBox1.Text & "]))"
かな?
この回答への補足
回答ありがとうございます。
実行したのですがやはり、System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。
というエラー発生しました。
これは、SQL文以外の場所でなにか問題があるのでしょうか?
よろしくお願いします
No.3
- 回答日時:
#2 で回答した内容の訂正です。
",PRIMARY KEY([" & TextBox1.Text & "]))"
の部分は
",PRIMARY KEY([" & TextBox2.Text & "]))"
ですね。
TextBox1 はテーブル名としたんでした。
で、私のところで試した際に生成された SQL 文は下記のとおりです。
CREATE TABLE [testTable] ([m01ID] INTEGER NOT NULL,[m02EmpID] INTEGER,[m02EmpName] STRING(30),PRIMARY KEY([m01ID]))
これを VB.NET で実行してもきちんとテーブルが作成されましたし、Access のクエリの SQL ビューで実行してもテーブルが作成されました。
ご自分のアプリで、Command オブジェクトの ExecuteNonQuery() を実行する前に
Debug.WriteLine(mysql.CommandText)
を挿入し、イミディエイト ウィンドウに出力された SQL 文を Access で実行してみてください。
(またはこの回答の補足あたりに提示してみてください)
ちなみにサンプルで作った VB.NET のコードはこんなです。
OleDbCommand1.CommandType = CommandType.Text
OleDbCommand1.Connection = OleDbConnection1
OleDbCommand1.CommandText = "CREATE TABLE [" & TextBox1.Text & "] ([" & TextBox2.Text & "] " & ComboBox1.Text & " NOT NULL,[" & TextBox3.Text & "] " & ComboBox2.Text & ",[" & TextBox4.Text & "] " & ComboBox3.Text & ",PRIMARY KEY([" & TextBox2.Text & "]))"
Debug.WriteLine(OleDbCommand1.CommandText)
OleDbCommand1.Connection.Open()
OleDbCommand1.ExecuteNonQuery()
OleDbCommand1.Connection.Close()
ありがとうございます。
おかげさまで、分かりました。
参考にしながらDBを作り直したら無事にうごきました。
どうやら、DBが物理的に壊れていたみだいです。
No.1
- 回答日時:
お世話になります。
あれ...?
mysql.CommandText をセットした後、
mysql.ExecuteNonQuery()
が無い様な...
もし、ここに書くときにコピペし忘れであれば、
Console.WriteLine(mysql.CommandText)
等として データベースに実際に発行されている
SQL 文を確認されてはいかがでしょう。
例えば、その SQL 文をコピーして
直接 Access のクエリで発行して、ちゃんと
意図したとおりに動くかどうか等。
回答ありがとうございます。
すみません、mysql.ExecuteNonQuery()を付け忘れていました。つけて実行してみたのですがSystem.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。と言うエラーが発生しました。
アドバイスをお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/20 14:46
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データがあれば○○なければのSQL
-
Access から Excelのシートをイ...
-
DAOでSQLServerに接続し、LeftJ...
-
ACCESS DCOUNTの抽出条件について
-
access 2013 テーブルの書き出し
-
アクセスでのバーコード印刷
-
Accessリンクするテーブルが見...
-
抽出条件でデータ型が一致しま...
-
Access vbaで重複レコードの削...
-
Accessで縦と横を入れ替えたい
-
【PHP/MySQL】コード上で生成...
-
SQLServer→Access インポート
-
ACCESSで購入回数を表示する方...
-
Accessのテーブルの値を更新したい
-
別のaccessファイルからデータ...
-
「ご処理進めて頂きますようお...
-
CloseとDisposeの違い
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
エクセルで、日付を入力すると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS VBAでテーブル内の特定...
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
Access vbaで重複レコードの削...
-
【access】複数のフィールドの...
-
抽出条件でデータ型が一致しま...
-
Accessで縦と横を入れ替えたい
-
別のaccessファイルからデータ...
-
sql文で削除クエリを書く
-
VBAでテーブル名とカラム名を動...
-
SQLServer→Access インポート
-
ACCESSのクエリ、SQLに変数を使...
-
重複した複数のレコードを1レ...
-
DAOでSQLServerに接続し、LeftJ...
-
アクセスで定数を利用したい。
-
アクセスで連続データをテーブ...
-
Access から Excelのシートをイ...
-
VB.NETでテーブルを作成
-
access追加クエリーでform入力...
-
社員名簿から検索する関数
おすすめ情報