çalışma anında tablo oluşturma.

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
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

çalışma anında tablo oluşturma.

Mesaj gönderen y.kulac »

s.a.
çalışma anında veritabanında ilgili tablo yoksa tabloyu o anda oluşturmak istiyorum.
bununla ilgili forumda değişik makaleler okudum. özellikler bu makaleyi çok inceledim.
viewtopic.php?t=106&highlight=create+database+interbase
hatta burda verilen kodu aynen kopyaladım ama bir türlü çalıştırmadım.

bende şu kodu yazıp çalıştırmak istedim.

Kod: Tümünü seç

ibquery1.Close;
 ibquery1.SQL.Clear;
 ibquery1.SQL.Add('create table ''FORMD''');
 ibquery1.Prepare;
 ibquery1.ExecSQL;
ama şu hatayı veiyor.
Dynamic sql error sql error code = -14
Token unknown - line 1, column14 'FORMD'.


1- her form açılışında veritabnında tablo varmı yokmu nasıl kontrol edebilirim.
2- tablo yoksa nasıl oluşturabilirim.
var olan tabloya alan ekleyebiliyorum. yok olan tabloyu oluşturamıyorum.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: çalışma anında tablo oluşturma.

Mesaj gönderen y.kulac »

biraz daha bocalamadan sonra şöyle bir çözüm bulabildim.
önce bir tane ibtabe ye yeni oluşturacağım tablonun adını atadım.
form açılırken tablo adı olmadığpı için hata verecek. bu hatayı try finallyde hata oluşturan yere tablo oluşturma kodlarını yazdım.eğer hata vermez ise zaten tablo vardır ve adı ibtable bileşine aktarılacak.
burda izlediğim yol acemice mi acaba?

Kod: Tümünü seç

try
ibtable1.TableName := 'FORMD';
Finally
 if (not ibtable1.Exists) then
 begin
 ibquery1.Close;
 ibquery1.SQL.Clear;
 ibquery1.SQL.Add('create table FORMD (ID INTEGER, SNO SMALLINT, ADISOYADI VARCHAR (60),ADRES VARCHAR (100),YYERIADRES VARCHAR (20),DADRES VARCHAR (20),TASTARIHI DATE, TARIH DATE, SAAT TIME, ACIKLAMA VARCHAR (100))');
 ibquery1.ExecSQL;
 ibquery1.Close;

 ibquery1.SQL.Clear;
 ibquery1.SQL.Add('CREATE GENERATOR GEN_FORMD');
 ibquery1.ExecSQL;
 ibquery1.Close;
 end;
end;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: çalışma anında tablo oluşturma.

Mesaj gönderen aslangeri »

s.a.
çözümünüzü paylaştığınız için teşekkür ederim.
eğer firebird in sistem tablolarını incelerseniz tablo varmı yokmu daha ,triger, procedure varmı yokmu daha kolay bulabilirsiniz. :wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: çalışma anında tablo oluşturma.

Mesaj gönderen y.kulac »

ben küçük çaplı programlar yazıyorum genelde ve hobi olarak.
firebird ile hiç triger ve storedprocedure kullanma ihtiyacını hiç hissetmedim.
bu bahsettiğiniz sistem dosyalarını nerden bulabilirim.
firebird kurulu olan yerde mi?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: çalışma anında tablo oluşturma.

Mesaj gönderen aslangeri »

eğer ib expert kullanıyorsanız database i register ederken özelliklerde "show system tables" gibi bir seçenek var onu işaretleyin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla