Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Otomatik Veritabanı Oluşturma
#1
Merhaba arkadaşlar delphi 7 de bir program yazdım firebird veritabanı kullanıyorum.Daha önce görmüş olduğum bir programdan esinlenerek kullanıcı giriş ekranına girişden ziyade birde veritabanı oluşturma ve bağlanma bölümü koydum ama sadece koymakla yetinebildim çümkü çok aramama rağmen bana yardımcı olacak kodu bulamadım.Kısacası sizden istediğim giriş ekranının veri tabanı bölümüne geçtiğimde edit nesnesine girilen benim istediğim bir isimle butona bastığımda veritabanı otomatik oluşturulsun ve bağlantısı yapılsın. bunu nasıl yapabilirim buna benzer  örnek kodlarınız ya da projeniz varsa benimle paylaşırsanız çok mutlu olurum. Yardımlarınız için şimdiden teşekkür ediyorum.
Cevapla
#2
(22-03-2020, Saat: 14:33)bnyamin86 Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar delphi 7 de bir program yazdım firebird veritabanı kullanıyorum.Daha önce görmüş olduğum bir programdan esinlenerek kullanıcı giriş ekranına girişden ziyade birde veritabanı oluşturma ve bağlanma bölümü koydum ama sadece koymakla yetinebildim çümkü çok aramama rağmen bana yardımcı olacak kodu bulamadım.Kısacası sizden istediğim giriş ekranının veri tabanı bölümüne geçtiğimde edit nesnesine girilen benim istediğim bir isimle butona bastığımda veritabanı otomatik oluşturulsun ve bağlantısı yapılsın. bunu nasıl yapabilirim buna benzer  örnek kodlarınız ya da projeniz varsa benimle paylaşırsanız çok mutlu olurum. Yardımlarınız için şimdiden teşekkür ediyorum.

Merhaba

Eğer db yoksa Firedac componentleri create edemiyor. Sizin db taşımanız gerekebilir.
Firebird SQLite gibi db create etmedi benim denemmde de.

5F7YTh.png


eğer dosyayı da taşırsanız işaretli ayarları yapıp bağlanabilirsiniz.
bK4c7j.png
Cevapla
#3
Dos ekranı açıp aşağıdaki linkdeki SQL kodları ile yapabilirsiniz diye düşünüyorm.

https://firebirdsql.org/manual/qsg10-creating.html
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#4
burada bir örnek paylaşmıştım https://www.delphican.com/showthread.php...B#pid26236

“Do. Or do not. There is no try.”
Cevapla
#5
(23-03-2020, Saat: 09:02)masteryoda Adlı Kullanıcıdan Alıntı: burada bir örnek paylaşmıştım https://www.delphican.com/showthread.php...B#pid26236

Guzel calisma olmus faydalanalim.
Cevapla
#6
Arkadaşlar hepinize yardımlarınız için çok teşekkür ediyorum ben tam olarak yapmak istediğim kodları buldum fakat çalıştırdığımda şöyle bir hata alıyorum.'Unavailable Database' nerde hata yapmış olabilirim. Acemi düzeyde olduğumdan çözemedim bir türlü.

procedure TOlustur.SpeedButton1Click(Sender: TObject);
var
Yol:String;
Begin
Yol:=GetCurrentDir+'\'+Edit1.Text+'.GDB';  //Veritabanı adı hazırlanıyor

//Database ayarlanıyor
       IBDatabase1.DataBaseName:=Yol;;
       IBDatabase1.SQLDialect:=3;
       IBDatabase1.LoginPrompt:=False;

//Database Oluşturuluyor
       IBDatabase1.CreateDatabase;

//Database oluşturuldu artık table,view,generator ve stored procedure oluşturmaya geçebiliriz.
//Parametreler yenileniyor Normal bağlantı parametrelerine dönülüyor.
       IBDatabase1.Connected:=False;
       IBDatabase1.Params.Values['User_Name']:='SYSDBA';
       IBDatabase1.Params.Values['PassWord']:='masterkey';
       IBDatabase1.Params.Values['lc_ctype']:='WIN1254';
//Database Connect ediliyor
       IBDatabase1.Connected:=True;
//Transaction Active ediliyor..
       IbTransaction1.Active:=True; 

//Table,index, view,generator ve stored procedurelerden 1 er tane örnek vereceğim
//Table oluşturuluyor

Try
IBSQL1.Close;

IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE TABLE "VASIF" ("KNO" DOUBLE PRECISION NOT NULL,');
IBSQL1.SQL.Add('"VASIFLAR" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
IBSQL1.SQL.Add('"YEVMIYE" DOUBLE PRECISION,');
IBSQL1.SQL.Add('"TRH" TIMESTAMP,');
IBSQL1.SQL.Add('PRIMARY KEY ("KNO"))');
IBSQL1.Prepare;
IBSQL1.ExecQuery;   //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//İndex oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE INDEX VASIFLARX ON BELGE ("VASIFLAR")');
IBSQL1.Prepare;
IBSQL1.ExecQuery;   //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//View oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE VIEW "TOPLA" ("KNO","YIL","AY","DN","ODESASGUN","ODESASMAT",');
IBSQL1.SQL.Add('"GELIRVRGMAT","GELIRVERGISI","PIRIM") AS ');
IBSQL1.SQL.Add('SELECT KIMLIK.KNO,BORDRO.YIL,BORDRO.AY,BORDRO.DN,BORDRO.ODESASGUN,');
IBSQL1.SQL.Add('BORDRO.ODESASMAT,BORDRO.GELIRVRGMAT,BORDRO.GELIRVERGISI,');
IBSQL1.SQL.Add('(BORDRO.SSKISVEREN+BORDRO.ISSIZKURUM+BORDRO.SSKISCI+BORDRO.ISSIZISCI) FROM BORDRO,KIMLIK');
IBSQL1.SQL.Add('WHERE KIMLIK.KNO=BORDRO.DETAYNO');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//Generator oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE GENERATOR "VASIF_GEN"');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;


//Stored Procedure oluşturuluyor autoinc field için
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE PROCEDURE "PROC_VASIF"');
IBSQL1.SQL.Add('RETURNS');
IBSQL1.SQL.Add('(');
IBSQL1.SQL.Add('  "NUM" INTEGER');
IBSQL1.SQL.Add(')');
IBSQL1.SQL.Add('AS');
IBSQL1.SQL.Add('BEGIN');
IBSQL1.SQL.Add('NUM = GEN_ID(VASIF_GEN,1);');
IBSQL1.SQL.Add('END');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

IBDatabase1.Connected:=False;
Cevapla
#7
Birşey söylemeyi unuttum bu kodlar interbase veritabanı için biliyorum önce bunu halledeyim daha sonra firebird için uyarlayacağım.
Cevapla
#8
Hocam Fiziksel olarak DB'yi oluşturmadan DB'ye bağlanmaya çalışıyorsunuz. ISQL ile DB Create edip deneyin.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#9
(25-03-2020, Saat: 00:29)mcuyan Adlı Kullanıcıdan Alıntı: Hocam Fiziksel olarak DB'yi oluşturmadan DB'ye bağlanmaya çalışıyorsunuz. ISQL ile DB Create edip deneyin.

bir sonuç gelişme oldumu bu problemde bende aynı kodlarla deneme yapıyorum ama hata vermediği halde tablo oluşmuyor.

procedure TfrmMain.Button1Click(Sender: TObject);
var
yol:string;
sifre:string;
begin
try
yol:=ExtractFilePath(Application.Exename);

sifre:='masterkey';

IBConnection1.Connected:=false;
IBConnection1.HostName:='localhost';
IBConnection1.DatabaseName:=yol+'system\db\VT_TURNUVA.FDB';
IBConnection1.Params.Values['User_Name']:='SYSDBA';
IBConnection1.Password:=sifre;
IBConnection1.Params.Values['lc_ctype']:='WIN1254';
IBConnection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Active:=True;


SQLQuery1.Close;

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TABLE "VASIF" ("KNO" DOUBLE PRECISION NOT NULL,');
SQLQuery1.SQL.Add('"VASIFLAR" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"YEVMIYE" DOUBLE PRECISION,');
SQLQuery1.SQL.Add('"TRH" TIMESTAMP,');
SQLQuery1.SQL.Add('PRIMARY KEY ("KNO"))');
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;
Finally
SQLQuery1.Close;
end;
ShowMessage('OK');
end; 
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#10
Hocam fiziksel olarak FDB dosyanız oluşmuş mu?
Ben orada bir FDB dosyasının oluşturan kod görmüyorum?
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Fastreport İçindekiler Sayfası Oluşturma [ÇÖZÜLDÜ] bydelphi 1 181 18-03-2024, Saat: 12:11
Son Yorum: bydelphi
  server programinda hani veritabani dogru olur. sadikacar60 4 302 30-01-2024, Saat: 21:06
Son Yorum: sadikacar60
  COZULDU veritabani prg yerine ne kullanabilirim. sadikacar60 8 694 29-01-2024, Saat: 18:41
Son Yorum: sadikacar60
  DBGRID Otomatik Sıra No Alanı [ÇÖZÜLDÜ] bünyamin68 2 393 18-10-2023, Saat: 21:00
Son Yorum: bünyamin68
  SQL VeriTabanı Kopyalama Hk. glagher 4 575 10-09-2023, Saat: 14:18
Son Yorum: glagher



Konuyu Okuyanlar: 1 Ziyaretçi