2017-12-04 7 views
2

まず、私はMS Access OleDbを使用していますが、UPDATE SQLクエリのパラメータの有無にかかわらず何度も試してみました。SQLデータの不一致で条件エラーが発生しました

写真更新ものではありません今の事実、私はボタンを更新しようとすると、私が手:抽出条件式で

データ型の不一致。

このエラーは私を夢中にさせてくれます。私を助けてください。ありがとうございました!

ktNヘッダからPublic Int32としてKayitNoから来、私は更新のためにデータグリッドためにクリックすると、「

OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=TSP.accdb"); 
OleDbCommand komut = new OleDbCommand("UPDATE TSP_Data SET [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected] Where KayitNo="+ktN,con); 

komut.Parameters.AddWithValue("@SeriNo",Convert.ToString(sNText.Text)); 
komut.Parameters.AddWithValue("@PartNo", Convert.ToString(partNoText.Text)); 
komut.Parameters.AddWithValue("@PID",pidText.Text); 
komut.Parameters.AddWithValue("@Model",Convert.ToString(modelText.Text)); 
komut.Parameters.AddWithValue("@UretimTarihi",uretimTarihi.Value); 
komut.Parameters.AddWithValue("@Teknisyen", Convert.ToString(teknisyenSec.SelectedItem)); 
komut.Parameters.AddWithValue("@ServisGiris", serviseGirisTarihi.Value); 
komut.Parameters.AddWithValue("@Ariza", Convert.ToString(arizaText.Text)); 
komut.Parameters.AddWithValue("@TeknisyenNotu", Convert.ToString(teknisyenNotuText.Text)); 
komut.Parameters.AddWithValue("@YapilanIslem", Convert.ToString(yapilanIslemText.Text)); 
komut.Parameters.AddWithValue("@MudahaleSonucu", Convert.ToString(mudahaleSonucuSec.SelectedItem)); 
komut.Parameters.AddWithValue("@BoardUzerindekiYeri", Convert.ToString(boardYeriText.Text)); 
komut.Parameters.AddWithValue("@TamirSeviyesi", Convert.ToString(tamirSeviyesiSec.SelectedItem)); 
komut.Parameters.AddWithValue("@CaseID", caseIDText.Text); 
komut.Parameters.AddWithValue("@SonKontrolSonucu", Convert.ToString(sonKontrolSonucuSec.SelectedItem)); 
komut.Parameters.AddWithValue("@TeslimEdilenTarih", teslimEdilenTarih.Value); 
komut.Parameters.AddWithValue("@UrunDurumu", Convert.ToString(urunDurumuSec.SelectedItem)); 

// komut.Parameters.Add((その時点では、テキストボックスとdatetimePickers等に他の列を検索します) @Foto "、OleDbType.Binary、foto.Length).Value = foto; con.Open(); komut.ExecuteNonQuery(); con.Close(); MessageBox.Show( "Successful");

このような順序でテーブルデザイン:

KayitNo(Int,PK,AutomaticNumber) 
SeriNo(Long Text) 
PartNo(Long Text) 
PID(Int) 
Model(Long Text) 
UretimTarihi(Date/Time) 
Teknisyen(Text) 
ServisGiris(Date/Time) 
Ariza(Long Text) 
TeknisyenNotu(Long Text) 
YapilanIslem(Long Text) 
MudahaleSonucu(Long Text) 
BoardUzerindekiYeri(Long Text) 
TamirSeviyesi(Long Text) 
CaseID (Int) 
SonKontrolSonucu(Text) 
TeslimEdilenTarih(Date/Time) 
UrunDurumu(LongText) 
Foto(OLE OBJECT) 
+1

なぜ他のすべての変数に対してktNのパラメータをランダムに使用しないのですか?すべての入力値をパラメータ化する必要があります。エラーに関しては、あなたの変数のいずれかが間違って入力されている可能性がありますが、それはおそらく整数または日付の変数です。入力内容が有効であることを確認してください。そうでない場合はどうですか?あなたのアプリはエントリを検証しているはずです。特に日付がある場合は、文字列だけでなくDateTimeオブジェクトにします。 – ADyson

+1

Convert.ToDateTimeを試してください 'komut.Parameters.AddWithValue( "@ ServisGiris"、Convert.ToDateTime(serviseGirisTarihi.Value));' –

+0

@ChrisCatignani私は何も変わりませんでした。 –

答えて

1

のDateTime値がstring

sql datetimeしようとするから変換する必要がありますと OleDbCommand komut = new OleDbCommand("UPDATE TSP_Data SET UretimTarihi= convert(varchar(50),@UretimTarihi,101) Where KayitNo="+ktN, con);

komut.Parameters.AddWithValue("@UretimTarihi",uretimTarihi.Value.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss"));

それともDateTimeOffset.Now.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'zzz")とに

どのエラーが発生しているかを判断するために値を1つずつ入力しようとしましたか?挿入文字列に複数の問題があるかどうかは不明です。しかし、確かに私は値を挿入するときにdatetimeエラーが発生しました。

関連する問題