0

あなたが私を助けてくれることを願っています。まず第一に、私の英語がうるさくて申し訳ありません。私はネイティブ スピーカーではありません。

このエラーが発生していますが、何が間違っているのかわかりません。ローカルの MySQL DB に、OLEB DB を使用する別のプログラムからのデータを入力するプログラムがあります。したがって、テーブルを比較し、オンデマンドで新しいデータをアップロードします。しかし、他のテーブルで使用したのと同じ Sub を使用する 1 つのテーブルのみでこのエラーが発生します。

「フィールドリスト」の不明な列「lpedidos.serie」

問題は、「lpedidos.serie」が実際に存在することです。だからここにサブのコードがあります、笑わないでください、私はおそらく非常に非効率的であることを知っていますが、私はただの初心者です.

        Public Sub notIndexedTables(table As DataTable, table2 As DataTable, tableNA As String)
    Dim temptable As DataTable
    temptable = table.Clone
    Dim tablename As String = temptable.TableName
    Dim myAdapter As MySql.Data.MySqlClient.MySqlDataAdapter
    Dim SQL As String

    Dim newconn As New MySql.Data.MySqlClient.MySqlConnection
    newconn = mysqlConnection()
    newconn.Open()

    SQL = "TRUNCATE " & tableNA
    myAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter()
    Dim command As MySql.Data.MySqlClient.MySqlCommand
    command = New MySql.Data.MySqlClient.MySqlCommand(SQL, newconn)
    myAdapter.DeleteCommand = command
    myAdapter.DeleteCommand.ExecuteNonQuery()

    For Each row As DataRow In table.Rows()
        Dim columnNumber As Int32 = row.ItemArray.Count
        Dim i As Integer = 0

        Dim s1 As String = "("

        For Each columna In row.ItemArray
            i = i + 1
            If i = columnNumber Then
                s1 = s1 + CStr(table2.Columns.Item(i - 1).ColumnName) & ")"
            Else
                s1 = s1 & CStr(table2.Columns.Item(i - 1).ColumnName) & ", "
            End If
        Next

        Dim s2 As String = "("
        i = 0
        For i = 0 To (columnNumber - 2)
            s2 = s2 & "'" & CStr(row.Item(i)) & "', "
        Next

        s2 = s2 & "'" & CStr(row.Item(columnNumber - 1)) & "')"


        SQL = "INSERT INTO " & tableNA & " " & s1 & " VALUES " & s2
        myAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter()
        '  myCommand = New MySql.Data.MySqlClient.MySqlCommandBuilder(myAdapter)

        command = New MySql.Data.MySqlClient.MySqlCommand(SQL, newconn)

        myAdapter.InsertCommand = command
        myAdapter.InsertCommand.ExecuteNonQuery()


    Next
    newconn.Close()
    newconn.Dispose()
End Sub

基本的に、MySQL テーブル (tableNA) を取得し、それを切り捨て (この手順はインデックスのないテーブル用です。一意のインデックスを持つテーブルには別の手順があります)、OLEB テーブル (テーブル) からのデータで埋め、列名を取得します。 MySQL テーブル (table2) の一時コピーから (この場合、table2 を使用する必要はないかもしれませんが...とにかく)。

例外と、例外がスローされたときに SQL 文字列が取る値を次に示します。 例外

SQL 文字列値

そして、これは phpMyAdmin のテーブル構造のスクリーンショットです。 lpedidos テーブル構造

4

1 に答える 1

0

New MySqlConnectionを宣言するときは、そこに接続文字列を入力し、データベース名を指定する必要があります。接続文字列を表示できますか?

Dim myConnection As New MySqlConnection(myConnString)
myConnection.Open()

それでも問題が解決しない場合は、別の列名を試して、それが予約済みのキーワードではないことを確認してください。

于 2013-03-24T03:27:45.033 に答える