FireBird VT'ye Baglanma Sorunu

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
korhanpinar
Üye
Mesajlar: 8
Kayıt: 29 Eki 2005 10:54

FireBird VT'ye Baglanma Sorunu

Mesaj gönderen korhanpinar »

mrb.

sitedeki "IBX'e (InterBase eXpress) Giriş" bolumundeki orneğe bakarak bir uyulama yapmak istedim. sitedeki orneği yaptım ama sonra kendi programımda sorun yaşadım. aşağıda yaptığım herşeyi detaylı olarak anlattım. hatam nerede cozemedim. aldığım hata msj ise en altta. ilgilenirseniz çok sewinirim. elimdeki projeyi ACCESS kullanarak yapmak istemiyorum. artık bi adım oteye gitmeliyim.

Yeni Bir Proje açtım ve bir datamodule ekledim. Sonra datamodule bi

IBDataBase ekledim. sağ tıklayarak database component editoru açtım.

Local'i seçerek şunları yaptım:
Database = c:\DATABASE.Fdb
UserName = SYSDBA
Password = masterkey
Charset = WIN1254
login prompt'unda OK 'ini kaldırdım. Test butonuna tıladım test

başarılı oldu. settings'im şoyle:
user_name=SYSDBA
password=masterkey
lc_ctype=WIN1254



datamodule IBTransaction ekledim ve defaultdatabase=IBDataBase1 yaptım.

Transaction Editoru açarak Read Commit'i seçtim.Settings'im şöyle oldu:
read_committed
rec_version
nowait

IBDataBaseDeafultDatabase = IBTransaction1 seçtim

IBDataSet ekledim ve DataBase = IBDatabase1 yaptım. SelectSQL'i açarak

select * from MYTABLE_1 Yazdım. DataSet e sag tiklayarak Dataset editor

u actim.Table Name'de MYTABLE_1 kandiliğnden geldi zaten. KEYFIELDS

ve UPDATEFIELDS'ta tablo yaparken yarattığım tek alan olan NO alanları

seçili durumda. GENERATESQL'E tıkladım ve butun sql kodlarını kontrol

ettim. OK diyerek kapattım.

Bir DATASOURCE ekledim ve DataSet = IBDataSet1 yaptım. Forma Bir grid

koydum ve unit1 e uses unit2; kodunu ekledim. boylece DataModule1

(yani DM) grid tarafından kullanılabilir oldu. Gridde

DataSource=DM.DataSource1 yaptım.

Ve IBDataSet1 in Active = True yapmakistediğimde (object inspector dan) şu msj veriyor.

Dynamic Sql error
SQL Error Code = -104
Token Unknown - line 3, char 3 NO.

msj dynamic sql diyor. hatanın nerden kaynaklandığı hakkında en ufak bi fikrim yok. aşağıda IBDataSet teki butun SQL cumleciklerini veriyorum. hepsini kontrol ettim. bence bi sorun yok. sql error dediği için hepsini veriyorum

SELECTSQL= select * from MYTABLE_1
MODIFY
update MYTABLE_1
set
NO = :NO
where
NO = :OLD_NO

INSERT
insert into MYTABLE_1
(NO)
values
(:NO)

DELETE
delete from MYTABLE_1
where
NO = :OLD_NO

REFRESH
Select
NO
from MYTABLE_1
where
NO = :NO

Bu sorunu Aşmama Yardım Ederseniz Çok Sewinirim. yada basit bir ornek verirseniz oda olur. ama sitedeki anlatımda olduğu gibi comboboxlarla kafa karıştırmazsanız sewinirim. sadece bağlantı kurup ekrana getirsem yeter. Gerisini ben halledebilirim sanırım. Ayrıca sitedeki ornek uygulamayı yaptım. gayet guzel çalışıyor. kendi orneğimdeki farkın ne olduğunu anlayamadım.

şimdi aklıma geldi. DataSEt Tasarım anında active=false iken şu kodu OnCreate'e yazdım
dm.IBDataSet1.Active:=True;

error msj : "Access violation at address ... in module..."

ilginize tşkr.

(amma uzun yazmışım. umarım sıkılıp cevap vermekten vazgeçmezsiniz)
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Re: FireBird VT'ye Baglanma Sorunu

Mesaj gönderen Uğur1982 »

selam
korhanpinar yazdı: Ve IBDataSet1 in Active = True yapmakistediğimde (object inspector dan) şu msj veriyor.

Dynamic Sql error
SQL Error Code = -104
Token Unknown - line 3, char 3 NO.
msj dynamic sql diyor.
SelectSQL in hatalı olduğunu belirtiyor...Aktif Dataseti sil yeni bir tane ekle aynı şekilde SelectSQL'ine

Kod: Tümünü seç

select * from MYTABLE_1
yaz..tabi bu kod çalışıyormu o da önemli..GenerateSQLe yap..Birde senin 'NO' alanın çelişkili bir alan ismi gibi geliyor.Bu bir komut ismide olabilir..SIRANO gibi yapabilirsin vs.
şimdi aklıma geldi. DataSEt Tasarım anında active=false iken şu kodu OnCreate'e yazdım
dm.IBDataSet1.Active:=True;
OnCreate anında dataseti aktif etmene gerek yok..Kullanıcağın zaman açarsın,işin bittikten sonra kapatırsın..
iyi günler...
Cevapla