Merhaba,
Ben de makale ve ipucundan yararlanarak aşağıdaki kodları yazmıştım. Çalışıyor. Ben her bir yıl için bir dosya oluşturacak şekilde bir program yapıyordum. Kullanıcı yılı seçtikten sonra dosya yoksa aşağıdaki kodla oluşturuyordu.
Kod: Tümünü seç
procedure tf_yilgiris.dosya_olustur;
begin
dm1.IBDatabase1.Connected:=false;
//Database ayarlanıyor
dm1.IBDatabase2.DataBaseName:=dosya_yolu;
dm1.IBDatabase2.SQLDialect:=3;
dm1.IBDatabase2.LoginPrompt := false;
//Database Oluşturuluyor
dm1.IBDatabase2.CreateDatabase;
// showmessage('Database Oluşturuluyor kısmı bitti');
//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.
dm1.IBDatabase2.Connected:=False;
dm1.IBDatabase2.Params.Values['User_Name']:='SYSDBA';
dm1.IBDatabase2.Params.Values['PassWord']:='masterkey';
dm1.IBDatabase2.Params.Values['lc_ctype']:='WIN1254';
//Database Connect ediliyor
dm1.IBDatabase2.Connected:=True;
//Transaction Active ediliyor..
dm1.IbTransaction7.Active:=True;
// *************** CLIENTS TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE CLIENTS (');
dm1.ibsql1.SQL.Add('CLKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('KODU VARCHAR(20) NOT NULL COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('ISIM VARCHAR(50) NOT NULL COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('OZEL_KODU VARCHAR(20) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('ADRES VARCHAR(60) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SEMT VARCHAR(25) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('ILI VARCHAR(25) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('TESLIM_ALAN VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('FAALIYET VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('VD_MASTER INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('VERGI_NOSU VARCHAR(14),');
dm1.ibsql1.SQL.Add('PRIMARY KEY (CLKAYIT_NO))');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
// ************ FIRMA TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE FIRMA (');
dm1.ibsql1.SQL.Add('FRKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('ISIM VARCHAR(50) NOT NULL COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('ADRES VARCHAR(60) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SEMT VARCHAR(25) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('ILI VARCHAR(25) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('VD_ID INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('VERGI_NO VARCHAR(14),');
dm1.ibsql1.SQL.Add('A_DEFT_ID INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('A_TARIH DATE,');
dm1.ibsql1.SQL.Add('A_SAYI VARCHAR(10),');
dm1.ibsql1.SQL.Add('A_BASLAMA DATE,');
dm1.ibsql1.SQL.Add('A_BITIS DATE,');
dm1.ibsql1.SQL.Add('TES_ED_ISIM VARCHAR(50) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('PRIMARY KEY (FRKAYIT_NO))');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
// ************ BELGE HAREKET TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE BELGE_HAREKET (');
dm1.ibsql1.SQL.Add('HRKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('MAST_KODU INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('KAYIT_TARIHI DATE,');
dm1.ibsql1.SQL.Add('CINSI VARCHAR(70) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SERISI VARCHAR(4) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SERI_NOSU DOUBLE PRECISION,');
dm1.ibsql1.SQL.Add('MIKTARI INTEGER,');
dm1.ibsql1.SQL.Add('VERILIS_TARIHI DATE,');
dm1.ibsql1.SQL.Add('TES_ALAN VARCHAR(50) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('MVD_ID INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('TES_EDEN VARCHAR(50) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('TES_ED_TARIHI DATE,');
dm1.ibsql1.SQL.Add('PRIMARY KEY (HRKAYIT_NO))');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
// ************ SEMTLER TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE SEMTLER (');
dm1.ibsql1.SQL.Add('SMKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('SEMT_ADI VARCHAR(25) COLLATE PXW_TURK)');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
//*********** ILLER TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE ILLER (');
dm1.ibsql1.SQL.Add('ILKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('IL_ADI VARCHAR(25) COLLATE PXW_TURK)');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
//*********** belge tur TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE BELGE_TUR (');
dm1.ibsql1.SQL.Add('BTKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('BELGE_TURU VARCHAR(25) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SERI VARCHAR(4) COLLATE PXW_TURK,');
dm1.ibsql1.SQL.Add('SERI_NO DOUBLE PRECISION )');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
//*********** belge VERGI_DAIRE TABLE I
Try
dm1.ibsql1.Close;
dm1.ibsql1.SQL.Clear;
dm1.ibsql1.SQL.Add('CREATE TABLE VERGI_DAIRE (');
dm1.ibsql1.SQL.Add('VDKAYIT_NO INTEGER NOT NULL,');
dm1.ibsql1.SQL.Add('ISMI VARCHAR(25) NOT NULL COLLATE PXW_TURK)');
dm1.ibsql1.Prepare;
dm1.ibsql1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.ibsql1.Close;
end;
//Generator oluşturuluyor
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_BELGE_HAREKET_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_BELGE_TUR_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_CLIENTS_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_FIRMA_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_ILLER_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_SEMTLER_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
Try
dm1.IBSQL1.Close;
dm1.IBSQL1.SQL.Clear;
dm1.IBSQL1.SQL.Add('CREATE GENERATOR GEN_VERGI_DAIRE_ID');
dm1.IBSQL1.Prepare;
dm1.IBSQL1.ExecQuery; //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
dm1.IBSQL1.Close;
end;
// SHOWMESSAGE ('dosya oluşturma işi bitti çıkacaz ');
dm1.IBDatabase2.Connected:=false;
dm1.IBTransaction7.Active:=false;
end;
Sanırım bağlanırken kullanıcı olarak ayrı bir isim dosya oluştururken ayrı bir kullanıcı ismi kullanılıyordu. Ondan da olabilir.
Karakter kodları için ise ibdatabase in params propertisine
Kod: Tümünü seç
PAGE_SIZE 4096
DEFAULT CHARACTER SET
WIN1254
user_name=SYSDBA
password=masterkey
yazın diye öneride bulunmuşlardı.
Kolay gelsin.