insert olayında hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

merhaba arkadasım , dediğini denedim yine olmadı. Veri aktardığım tablonun alan isimlerini büyük harf yaptım , ama aynı sorun devam ediyor. verdiği hatayı yazayım en iyisi

Kod: Tümünü seç

 invalid use of keyword 
token  :M''  (asıl veri AMBLEM 'M' seklinde) 


hata verdiğinde imlecin bulundugu kayıt hep bu tür veriler, işlemi birden fazla tablo üzerinde denedim ama aynı yazılım şekillerinin oldugu kayıtlarda kalıyor.

ayrıca tırnaklı verilerden tırnağı hata verdikçe düzelttim ve kayıt işlemini yenden yaptım.Alan isimleri küçük olmasına rağmen insert işlemi başarıyla tamamlandı.Ancak veriler orjinal haline döndüğünde ise sorun halen aynı. :?

yani ' varsa alan ismi küçükde olsa büyük de olsa sorun mevcut , verdiği hata aynı. ' yoksa sorunsuz insert :)
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
peki şöyle diyeyim.
a) qsecilentable için : bde sekmesinden table bileşenini, bir datasource, bir dbgrid kullanıyorum. table name kısmına c:\dilruba.dbf yazıyorum. Bu dbf yi Delphideki database desktop ile oluşturdum. Tipini Dbase IV seçtim. ve içinde

Kod: Tümünü seç

STOK_NO              STOK_ADI
------------             ---------------------------------
40602                   3 Kg Bingo 'B'  kalite
40301                   1300 gr bingo 'C' kalite

verileri var.

b) yenitable için :ado sekmesinden adoquery bileşenini, bir datasource,bir adoconnection, bir dbgrid bileşeni kullanıyorum.

c) win xp türkçe, delphi 7, mssql için msde 2000 kullanıyorum. ve mdac 2.8 var.


Bağlantılar bu şekilde yapıldıktan sonra size son gönderdiğim kodu kullanıyorum. Ve şu an aktarıyor.

Yukarıda anlattıklarımdan sizin tarafınızda farklı olan bir şey var mı? Yoksa siz o dosyadan bir kaç tane sorunlu bırakıp bana gönderebilir misiniz?

Kolay gelsin.
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

merhaba arkadasım ben windows 2000 ve delphi 6 kullanıyorum , diğerleri aynı.
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

tekrar merhaba
söyle bi farklılık var bir de , benim kaynak dosyam sql server da , aktardıgım yer c:x.dbf dosya .

sizin örnek de ise bunun tam tersi bunun bi etkisi olabilir mi?(gerçi farklı bi yerde de dbf dosyadan sql servera bilgi alıyorum aynı sorun o kısımda da var doğal olarak)

iyi çalışmalar
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
internet erişimimde hata olduğundan size geç yazdım. Siz iki yoldan birini yapabilirsiniz.

a) Texti ilk kullandığınız gibi kullanırsınız. Sadece değişkenleri quotedstr()
fonksiyonu içine alırsınız. Yani

Kod: Tümünü seç

qscilentable.FieldValues['A']
yerine

Kod: Tümünü seç

quotedstr(qsecilentable.FieldValues['A'])
şeklinde kullanırsınız. Bu fonksiyon Ali'nin şeklindeki bir yazıyı Ali''nin şekline koyuyor ki bu da istediğimiz bir şeydir.

b) Daha önce belirttiğim gibi parametreli kullanmak.

Bu her iki şekilde bende çalışıyor. Sizde bilmem :lol:

Ayrıca hala anlayabilmiş değilim. Sizde alan isimleri küçük harfle oluyor. Bende küçük harfle kabul etmiyor. Bunun nedenini bilen varsa bize inşallah bilgi verir.
İnternet bağlantım gelirse yine devam ederiz.
İyi çalışmalar.
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

merhaba

Kod: Tümünü seç

quotedstr(qsecilentable.FieldValues['A']) 
bu şekilde daha önce denemiştim yine denedim ilginç ama ' dan önceki kelimeyi hatalı belirtiyor. hata mesajı aynı.

iyi çalışmalar
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Şimdi ilk kodunuzu aşağıya alalım.

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;


buradaki

Kod: Tümünü seç

          sql.add(''''+qsecilentable.FieldValues['F']+''',');
kodu yerine aşağıdaki kodu yazın.

Kod: Tümünü seç

  sql.add(QUOTEDSTR(qsecilentable.FieldValues['F'])+',');

baştaki ve sondaki tırnakları sildik. Yukarıdakinin aynısını yaparsanız. Sarnırım sorununuz çözülmüş olur.
Burada tırnaklı olunca sanırım siz quotedstr nin quotedstrsini alıyorsunuz gibi bir şey oluyor. :lol:

Ayrıca bana gönderdiğiniz örneklerde siz tabloyu oluştururken küçük harfle oluşturuyorsunuz. O yüzden insert veya update yi küçük harfle kullanabiliyorsunuz.

Bana gönderdiğiniz programı kullanamadım. Çünkü farklı bileşenler vardı. Ama dosyanızı datapump ile sql servera atıp ben de sizinki gibi kaynak sql serverde yeni dosya c: de olacak şekilde ayarladım.

Kolay gelsin.
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

cok teşekkürler , sonunda sorun çözüldü.
Cevapla