1

テーブルへの挿入は成功していますが、何らかの理由でフィールドがめちゃくちゃな位置にあります。MS Access データベース 2010 を使用して Visual Studio 2012 C# で作業しています。

(画像を直接投稿するのに十分な担当者がいないので、リンクを我慢してください)これはテーブル構造のようなものです(申し訳ありませんが、2つ以上のリンクを投稿することはできません)

(列 = フィールドタイプ):

  • Codigo = テキスト
  • データ サイダ (別名 @data) = 日付/時間
  • Entidade = テキスト
  • Data Ent = データ/時間
  • GT Ent = テキスト
  • Estado = テキスト
  • GT サイダ = テキスト
  • observacaoes = テキスト
  • requisitante = 数
  • 証明書 = テキスト
  • 結果 = テキスト
  • 選択 = はい/いいえ
  • Tipo int = テキスト

これは、行のような正しい行の表の良い例です。 Good Row

これは、INSERT Messed Up Rowで取得している行です

これが私がINSERTを作る方法です

                OleDbCommand cmd = l.CreateCommand();

                cmd.Parameters.Add(new OleDbParameter("@codigo", cal.CodEtiq.ToString()));
                cmd.Parameters.Add(new OleDbParameter("@data", cal.Data));
                cmd.Parameters.Add(new OleDbParameter("@entidade", cal.EntidadeCal));
                cmd.Parameters.Add(new OleDbParameter("@observacao", cal.Observacao));
                cmd.Parameters.Add(new OleDbParameter("@certificado", cal.Certificado));
                cmd.Parameters.Add(new OleDbParameter("@resultado", cal.Resultado));
                cmd.Parameters.Add(new OleDbParameter("@selecionar", cal.Selecionar));

                cmd.CommandText = "INSERT INTO [Movimento Ferramentas] VALUES (@codigo, @data , @entidade, null, null,  'Calibração', null, @observacao, null, @certificado, @resultado,   @selecionar , null)";   

                result = cmd.ExecuteNonQuery();

ここで何が間違っていますか?

4

1 に答える 1

2

ステートメントで列を指定していないためINSERT、テーブルの列の順序に基づいて値を挿入しています。実際の列の順序はよくわかりませんが、INSERTステートメントで列を指定することで問題を解決できます。

cmd.CommandText = "INSERT INTO [Movimento Ferramentas] "+
                  "(Codigo , [Data saida], ...............) " + // columns
                  "VALUES (@codigo, @data , @entidade, null, null,  'Calibração', null, @observacao, null, @certificado, @resultado,   @selecionar , null)";
于 2013-10-29T14:30:26.753 に答える