SQL dizesi hata veriyor

1 2
22/03/2009, 19:27

okileturc

Arkadaşlar
Aşağıdaki dizede "ILKNOVER" değişkenini
algılamıyor ve kayıt eklerken parametre değerini
girin hatası veriyor, nedendir ?
Kod:
Private Sub Komut7_Click()
Dim ILKNOVER As Integer
ILKNOVER = Forms!numarataj.Form!ILKNO
Do While ILKNOVER < Forms!numarataj.Form!SONNO+1
DoCmd.RunSQL "INSERT INTO FORMNOTAKIP ( SERVISFORM_PERSONEL_ID, SERVISFORM_NO )SELECT [Forms]![numarataj].[Form]![PERSONELGOR], [ILKNOVER];"
ILKNOVER = ILKNOVER + 1
Loop
End Sub
Teşekkürler
22/03/2009, 20:04

Seruz

Birde şu şekilde dener misiniz?
Kod:
DoCmd.RunSQL "INSERT INTO FORMNOTAKIP (SERVISFORM_PERSONEL_ID, SERVISFORM_NO) VALUES (" & [Forms]![numarataj].[Form]![PERSONELGOR] & "," & ILKNOVER & ")"

Aslında biliyorsunuzdur diye tahmin ediyorum ama
VBA kod kısmında Breakpoint koyup, Immediate penceresinden
? ile daha iyi görebilirsiniz bu tür problemleri.
22/03/2009, 20:12

okileturc

Hocam bilmiyordum
Ama gönderdiğiniz düzeltme
problemsiz çalıştı
Çok tşk.

Bana anlattığınız penceredeki
eylemim screenshot unu atabilirmisiniz
22/03/2009, 20:18

Seruz

Öncelikle şunu sorayım, türkçe Access mi, ingilizce Access mi kullanıyorsunuz?
Aslında fırsat bulduğumda, Kod kısmında, breakpoint kullanımı, kodu adım adım çalıştırma, değişken takibi vb... konuları anlatmak istiyorum dersler bölümünde ama konu açılmışken size kısaca anlatabilirim.
22/03/2009, 20:24

okileturc

Siz dersler bölümün attığınızda
beni de uyarırsanız yeterlidir
tekrar tşk ederim
22/03/2009, 21:12

Seruz

VBA penceresinde; Kodların hemen solunda yer alan işaretli sütuna tıkladığınızda veya o satırda f9 tuşuna bastığınızda, orası bir breakpoint (durma noktası) olarak işaretlenecektir.



Yani bu şu demek. Program çalıştığında, yani mesela sizin örnekte Komut7 adlı butona tıklandığında, kodlar işlenirken, burada dur ve beni bekle.



Bu aşamada, kod çalışması durduktan sonra ise yapabilecekleriniz çok çeşitli.

* Kodun çalışması durmuş durumdayken F8 tuşu ile kodu satır satır çalıştırabilir ve nasıl çalıştığını takip edebilirsiniz. İsterseniz F5 tuşu ile kodu kaldığı yerden çalıştırmaya devam edebilirsiniz. (başka bir breakpoint varsa oraya kadar)

* Bu esnada mouse'u herhangi bir değişkenin üstüne götürdüğünüzde size anlık olarak değerini gösterecektir.



Resimde görüldüğü gibi açık değilse, menüden veya Ctrl+G tuşu ile açabileceğiniz Immediate penceresinde, başına ? işareti koyarak, sizi kodunuzda bulunsun veya bulunmasın bir fonksiyonun, hesaplamanın veya değişkenin sonucunu görebilirsiniz.
Sizin örnekte mesela docmd.runsql 'den sonra "" içinde nasıl bir hesaplama
yapıldığını görmek için, örnek resimde görüldüğü gibi,
? "INSERT INTO FORMNOTAKIP ( SERVISFORM_PERSONEL_ID, SERVISFORM_NO )SELECT [Forms]![numarataj].[Form]![PERSONELGOR], [ILKNOVER];"
yazıp entera bastığımda sonucu gösteriyor.
Böylece, istediğiniz gibi denemeler yaparak, hatanızın nerede olduğunu rahatça görür ve doğru sonuca ulaşabilirsiniz.

Birden fazla hesaplama veya değişken için aralarına , koyabilirsiniz, mesela a ve b değişkenlerinin toplamı ve çarpımının sonucunu görmek için;
? a+b , a*b

Immediate penceresinde başına ? koymazsanız, yazdığınız herhangi bir kod direkt çalıştırılır.
Örneğin; ILKNOVER = 1 yazıp entera bastığınızda, ILKNOVER değişkenine 1 atanır
veya docmd.runsql ... yazın direkt çalışır.

En sonda Watch'u yazayım,
Mesela sizin örneğinizde, döngüdeyken ILKNOVER değişkeninin değerini devamlı immediate penceresinde ? ILKNOVER ile veya mouse'u devamlı üstüne götürerek takip etmek yerine, Watch penceresinde anlık olarak takip edebilirsiniz. Bunun için Watch penceresinde sağ tuş ile Add Watch'u seçin ve expression kısmına ILKNOVER yazıp entera basın. Kod adım adım çalışırken siz anlık olarak ILKNOVER değişkeninin değerinin ne olduğunu görebilirsiniz. (ekteki resimde olmaması sizi şaşırtmasın, bende sizin örnek olmadığı için zaten çalışmıyor doğal olarak)

Şimdilik aklıma gelenler bunlar, biliyorum, biraz bölük pörçük oldu ama,
kod penceresiyle biraz uğraşıp denemeler yaparsanız, dediklerimi daha iyi kavrarsınız.

Öğrenir ve kavrarsanız koda hakim olursunuz.
Hata bulmak ve kodu takip etmek inanılmaz kolay olur.

Eğer fırsat bulursam, daha düzenli ve tertipli olarak dersler bölümüne yazmak istiyorum,
bakalım ne zaman olur.