insert olayında hata
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
insert olayında hata
merhaba arkadaslar ;
adoquery kullanarak insert işlemi yapmaya çalısıyorum. ancak aktardıgım verinin içerisinde 'B' yazılım tarzında veri varsa insert işlemi sonlanıyor. Sorunun tırnaktan kaynaklandıgını düşünüyorum ama bu sorunu nasıl halledebilirim bilmiyorum. yardımcı olur musunuz?
adoquery kullanarak insert işlemi yapmaya çalısıyorum. ancak aktardıgım verinin içerisinde 'B' yazılım tarzında veri varsa insert işlemi sonlanıyor. Sorunun tırnaktan kaynaklandıgını düşünüyorum ama bu sorunu nasıl halledebilirim bilmiyorum. yardımcı olur musunuz?
kod kısmı şu şekilde;
Kod: Tümünü seç
while not qsecilentable.Eof do
begin
with yenitable do
begin
close;
sql.Clear;
sql.add('insert into '+edit1.text+' ( stok_no , stok_adi,katalog_kodu , ');
sql.add('katalog_adi , kdvsiz_fiyat,para_birimi)');
sql.add('values('''+qsecilentable.FieldValues['B']+''',');
sql.add(''''+qsecilentable.FieldValues['F']+''',');
sql.add(''''+qsecilentable.FieldValues['A']+''',');
sql.add(''''+qsecilentable.FieldValues['A']+''',');
sql.add(''''+qsecilentable.FieldValues['H']+''',');
sql.Add(''''+qsecilentable.FieldValues['M']+''') ');
// sql.add(' '+qsecilentable.FieldValues['fiyat_degisim_tarihi']+')');
ExecSQL;
end;
qsecilentable.Next;
end;
anladığım kadarıyla bi yerden seçtiğin elemanları ekleme yaptırıyorsun.
qsecilentable tablosuna sağ tıklayıp elemanlarını ekle.
şeklinde denermisin bide?
kolay gelsin
qsecilentable tablosuna sağ tıklayıp elemanlarını ekle.
Kod: Tümünü seç
yenitable.insert;
yenitable.fieldbyname('A').asstring:=qsecilentableA.asstring;
yenitable.fieldbyname('B').asstring:=qsecilentableB.asstring;
....
....
yenitable.post;
kolay gelsin
Merhaba,
Yeni tablodan girilen verilerle ilgili olarak da örnek verebilir misiniz.
Ayrıca
kısmını fazla yazmamış mısınız.?
Kolay gelsin.
Yeni tablodan girilen verilerle ilgili olarak da örnek verebilir misiniz.
Ayrıca
Kod: Tümünü seç
sql.add(''''+qsecilentable.FieldValues['A']+''',');
Kolay gelsin.
yaptıgım işlem tam olarak şu ; c dizininde bulunan .dbf formattaki table'lı sql server da bi table oluşturup ihtiyacım olan verileri almak istiyorum. Aslında bu işlemi yapıyorum ancak cok zaman aldığı için sql kullanarak yapmak istedim , o zamanda (CIVATA 'B') gibi verilerde hata veriyor. ekleme yapmıyor.
Merhaba,
Bir fonksiyon tanımlamanız lazım. mesela
şeklinde kullanırsınız. Bu fonksiyonda ' veya " varsa silip yerine boşluk bıraksın.
Bu şekilde verinizi girebilirsiniz.
Kolay gelsin.
Bir fonksiyon tanımlamanız lazım. mesela
Kod: Tümünü seç
Tirnaksil(qsecilentable.FieldValues['F']);
Bu şekilde verinizi girebilirsiniz.
Kolay gelsin.
Ayrıca kodunuzu parametreli kullanırsanız. Daha okunaklı olur. Mesela ben tırnaklarda karıştırıyorum. Ama aşağıdaki gibi kullanılırsa daha okunaklı olur.
İyi çalışmalar.
Kod: Tümünü seç
sql.Clear;
sql.add('insert into :dosya_adi ( stok_no , stok_adi,katalog_kodu , ');
sql.add('katalog_adi , kdvsiz_fiyat,para_birimi)');
sql.add('values(:a_degeri,:b_degeri,:c_degeri,:d_degeri,:e_degeri');
yenitable.Parameters.parambyname('dosya_adi').value:=edit1.text;
yenitable.Parameters.parambyname('a_degeri').value:=qsecilentable.FieldValues['A'];
yenitable.Parameters.parambyname('b_degeri').value:=qsecilentable.FieldValues['B'];
yenitable.Parameters.parambyname('c_degeri').value:=qsecilentable.FieldValues['C'];
yenitable.Parameters.parambyname('d_degeri').value:=qsecilentable.FieldValues['D'];
yenitable.Parameters.parambyname('e_degeri').value:=qsecilentable.FieldValues['E'];
ExecSQL;
malesef yapamadım. pos fonksiyonunu kullanarak ' ları bulup ` ile değiştirmek istedim. Bu seferde pos fonksiyonunun ilk parametresi string oldugu için yine tırnak sorun oldu. mysqldeki string fonksiyonlarını da kullanamadıgım için ' ları delphi de karakter olarak nasıl belirtiriz açıkcası bilmiyorum. Başka nasıl yapabiliriz ?
İyi çalışmalar
İyi çalışmalar
Merhaba,
Sorununuz ' işaretinden değilmiş. Son bir kaç gündür diğer arkadaşların başına gelen sizin başınıza gelmiş. Ve ben de geç uyandım. Siz ' deyince ben de ona odaklandım.
Aşağıdaki kod ile denedim. Söylediğiniz türden de veriyi kolaylıkla alıyor.
Siz de diğer arkadaşlar gibi insert,update gibi komutlarda alan isimlerini küçük harfle yazmışsınız.
gibi bir hata alıyorsanız bundandır. Geçen günlerde bir iki arkadaşta da öyle olmuştu. Eklemiyor. Alan adınız stok_no ise bunu STOK_NO şeklinde yazmalısınız.
O hatadan mıdır diye bakmak için
şeklinde de denemiştim. hata verdi.
Diğer yandan dbf de
Kolay gelsin.
Sorununuz ' işaretinden değilmiş. Son bir kaç gündür diğer arkadaşların başına gelen sizin başınıza gelmiş. Ve ben de geç uyandım. Siz ' deyince ben de ona odaklandım.
Aşağıdaki kod ile denedim. Söylediğiniz türden de veriyi kolaylıkla alıyor.
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
begin
while not qsecilentable.EOF do
begin
with yenitable do
begin
close;
sql.Clear;
// sql.add('insert into DILRUBA (STOK_KODU,STOK_ADI)');
sql.add('insert into DILRUBA (stok_kodu,stok_adi)');
sql.add('values( :ST_NO, :ST_AD )');
PARAMETERS.ParamByName('ST_NO').VALUE:=QSECILENTABLE.FieldValues['STOK_NO'];
PARAMETERS.ParamByName('ST_AD').VALUE:=QSECILENTABLE.FieldValues['STOK_ADI'];
// PARAMETERS.ParamByName('ST_NO').VALUE:=GSECILENTABLE.FIELDBYNAME('STOK_NO').ASSTRING;
// PARAMETERS.ParamByName('ST_AD').VALUE:=GSECILENTABLE.FIELDBYNAME('STOK_ADI').ASSTRING;
ExecSQL;
end;
qsecilentable.Next;
end;
with yenitable do
begin
close;
sql.Clear;
sql.add('select * from dILRUBA');
open;
end;
end;
Kod: Tümünü seç
İnvalid column name 'stok_no'
O hatadan mıdır diye bakmak için
Kod: Tümünü seç
sql.add('insert into DILRUBA (stok_kodu,stok_adi)');
Diğer yandan dbf de
şeklindeki stok adını sorunsuz. bir şekilde aldı.3 kg bingo 'B' kalite
Kolay gelsin.