merhaba arkadaşlar mssql veritabanı kullanıyorum.adoquery ile update yapacagımda "invalid colum name 'a'" hata alıyorum.
a = radio1.caption değeri acaba radiobuttondamı hata yapıyorum diye düşündüm sildim tarih alanından başlatttım sorguyu bundada
"invalid a column name '21.11.205'" diye hata verdi.
ADOQuery1.SQL.Clear;
Adoquery1.SQL.add('update urunler set urun_alt="'+radiobutton1.caption+'", urun_tariha="'+tarihx.text+'", urun_saata="'+saatx.text+'" where urunkodu="'+urunkodux.text+'"');
AdoQuery1.ExecSQL;
urun_tariha bu alanın tarih tipindeyse 21.11.205 böyle bir tarihi de kabul etmez..
DateTimePicker kullanırsan hatalı tarih girişini de engellemiş olursun..
Merhaba,
sizin mesajınız alanı bulamadığı hakkındadır. Adoquery veya kullandığınız dbgrid içinden fieldsları silmiş olduğunuz için böyle bir mesaj vermiş olabilir.
Adoquery ile sağ tıklayıp field editöre bir bakın orada yoksa add ile ekleyin veya en son olarak kullandığınız sql komutunda * yerine belirli alanları istemişseniz. onlar çıkmadığı için düzeltemiyorsunuz.
Field editöre bakın diyecem.
Bir de parametre kullansanız daha iyi olur bence kod daha okunaklı olur kanaatimce.
Kolay gelsin.
Merhaba,
Alan isimlerini büyük harfle yazın. Bu şekilde çözülmesi lazım. Çünkü o şekilde denedim. sizin hatayı verdi. Demekki Adoquery alan isminde büyük harf istiyor.
Ayrıca adoquery1 i aynı zamanda sorgulama için de kullanıyorsanız. tekrar select li hale getirin. Yani aşağıdaki gibi yapın.
urun_tariha = ''''+tarihx.text+'''' yazmak gerekiyor. burada çift tırnak değil, 4 adet tek tırnak. iki adedi string başlangıcı ve sonu, ikisi de tırnak içinde tek tırnak yerine geçiyor. böylece 4 tırnak kullanmak gerekiyor.
burada karşılaşabileceğin sorun SQL server ın ayarı türkçe değilse tarih formatı yyyy-mm-dd gibi ters olabilir. Bunu aşmak için en iyisi parametre kullanman gerekir.
urun_tariha = :Tarih gibi.
parametreyi de program içinde
qrSorgu.parameters.parambyName('Tarih').Value := DateTimePicker1.Date
diyebilirsin. ama burada yine sorun çıkabilir. bu sefer saat bilgiside parametrede gider. bunun için DateTimePicker1.Date yerine,
strtodate(datetostr(datetimepicker1.date)) dersen datetimepicker ın sorununu da çözmüş olursun.