2012-05-07 49 views
0

これは私の最初の質問です。このウェブサイトに投稿しています。問題イムたが、これでプログラムはイムを実行したときのコード句FROM句で構文エラーが発生する

FROMに次のエラーメッセージ

構文エラーが持つ問題イムは、このラインである、ここで

Dim dbProvider As String 
    Dim dbSource As String 
    Dim con As New OleDb.OleDbConnection 
    Dim ds As New DataSet 
    Dim MaxRows As Integer 
    Dim sql As String 
    Dim TableName As String 
    Dim TableCreate As New OleDb.OleDbCommand("CREATE TABLE [" & TableName & "](" & "ID INTEGER NOT NULL," & ")", con) 
    Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM [" & TableName & "]", con) 
    Dim cb As New OleDb.OleDbCommandBuilder(da) 

    TableName = TbTableName.Text 

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" 
    dbSource = "Data Source = E:\A2 Computing\Project\PasswordDatabase.mdb" 

    con.ConnectionString = dbProvider & dbSource 

    con.Open() 

    da.Fill(ds, "NewTable") 

    MaxRows = ds.Tables("NewTable").Rows.Count 

であるばかり

da.Fill(ds, "NewTable") 

私が逃したものは分かりませんが、私はtablecreateかdaを宣言するときにブラケットと関係があると思いますか?どんな助けでも大歓迎です。 =)

答えて

1

TableNameには、の前に何かを割り当てる必要があります。現在のSQLはSELECT * FROM []なので、そこに構文エラーが表示されます。

変更コードの順序:

Dim TableName As String 
TableName = TbTableName.Text 

Dim TableCreate As New OleDb.OleDbCommand("CREATE TABLE [" & TableName & "](" & _ 
    "ID INTEGER NOT NULL" & ")", con) 
Dim da As New OleDb.OleDbDataAdapter("SELECT * FROM [" & TableName & "]", con) 
Dim cb As New OleDb.OleDbCommandBuilder(da) 

ます。またTableCreate文を実行する必要があります。 IIRCでは、ExecuteNonQueryを使用します。

TableCreate.ExecuteNonQuery; 
あなたのテーブルには、SQLを簡素化することができ作成

、ところで:あなたが実際にデータベースに接続されている

' Remove unnecessary concatenation for column definition, as it's always 
' the same 
Dim TableCreate As New OleDb.OleDbCommand("CREATE TABLE [" & TableName & _ 
    "](ID INTEGER NOT NULL)", con) 

?あなたのコードのどこにでもOleDBConnectionが表示されませんか?

ここOleDBCommand.ExecuteNonScalarのためのMSDNドキュメントからの完全な例です:

Private Sub CreateOleDbCommand(_ 
     ByVal queryString As String, ByVal connectionString As String) 
    Using connection As New OleDbConnection(connectionString) 
    connection.Open() 
    Dim command As New OleDbCommand(queryString, connection) 
    command.ExecuteNonQuery() 
    End Using 
End Sub 

また、あなたがCREATE TABLEを行うことは、新しい空のテーブルを作成し、そのため、あなたのSELECT * FROMことがなく、何も返さないであろうことを知っています単一のNULL行はデータを挿入しないためですか?

+0

お返事ありがとうございます、私はあなたの提案を試み、それは働いています!しかし、私は別の問題に遭遇しました。つまり Microsoft Jetデータベースエンジンは、入力テーブルまたはクエリ 'AwesomeTable'を見つけることができません。それが存在し、その名前が正しく綴られていることを確認してください。 私はまだ実際にテーブルを作成していないようですが、どのようにしてテーブルを作成するのかはわかりません。 – Mohjo

+0

私の(メジャー)編集を参照してください。 –

+0

これをお寄せいただきありがとうございます。あなたが私に与えたコードを試してみましたが、OLEDB接続がありますが、私はそれを後ろに置いていました。新しいエラーメッセージは、** CREATE TABLE文の構文エラーです。**それは 'Tablecreate.Executenonquery'行に現れます。どこが間違っているのか分かりませんが、もう一度括弧で括られていると思われます。今までのすべてのあなたの助けをもう一度ありがとう – Mohjo

関連する問題