Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Otomatik Veritabanı Oluşturma
#11
mevcut veritabanı dosyasına bağlanıp tablo oluştıurmak istiyorumdum

SQLTransaction1.CommitRetaining; satırını ekledim çalıştı

BU ARADA;
Error Message:
----------------------------------------
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".

ID için triger oluşturmam lazım kayıt yapamıyorum hata verdi.

çok teşekkürler
saygılarımla
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
#12
(27-03-2021, Saat: 20:12)sadikacar60 Adlı Kullanıcıdan Alıntı: mevcut veritabanı dosyasına bağlanıp tablo oluştıurmak istiyorumdum

SQLTransaction1.CommitRetaining;   satırını ekledim çalıştı

BU ARADA;
Error Message:
----------------------------------------
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".

ID için triger oluşturmam lazım kayıt yapamıyorum hata verdi.

çok teşekkürler
saygılarımla
Selamlar,
Gelen hata mesajında bir kayıt eklerken gönderilen değerlerden birinin (ID kolonunun) null olduğu ve bunun oluşturduğunuz tablodaki kurallara uymadığını söylüyor. Bu alandaki NOT NULL'u kaldırın veya auto incerement yapın ya da insert ederken ID'ye bir değer verin.
Cevapla
#13
tabloyu kodla oluşturuyorum aşağıdaki şekilde kendime göre uyarladım. burda ID için Not null u kaldırdım sonuç aynı hatta oluşan tabloya elle auto yapmaya çalıştım hata verdi. burda auto olayını kodla nasıl ekleyebiliriz. saygılarımla.

try

trh:=DateToStr(Now);
trh:=deletechar('.',trh);
trh:=deletechar(' ',trh);

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;
tblAdi:= 'TURNV_'+trh ;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TABLE "'+tblAdi +'" ("ID" INTEGER ,');    //NOT NULL
SQLQuery1.SQL.Add('"BID" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"OYADI" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME1" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME2" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME3" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME4" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME5" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAMETOP" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');

SQLQuery1.SQL.Add('PRIMARY KEY ("ID"))');
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;

//Generator oluşturuluyor
Try
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE GENERATOR "GEN_'+tblAdi+'_ID"'); 
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;
Finally
SQLQuery1.Close;
end;

SQLTransaction1.CommitRetaining;
Finally
SQLQuery1.Close;
end;
ShowMessage('OK');
end;  

triger ı araştırdım çalışacağını tahmin etmiyordum ama aşagıdaki düzenlemelerle çalıştı. inşallah başka sorun yaşamam 
çok teşekkürler saygılarımla.

procedure TfrmMain.Button1Click(Sender: TObject);
var
yol:string;
sifre:string;
trh:String;
tblAdi:string;
begin
try

trh:=DateToStr(Now);
trh:=deletechar('.',trh);
trh:=deletechar(' ',trh);

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;
tblAdi:= 'TURNV_'+trh ;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TABLE "T1" ("ID" INTEGER,');    //NOT NULL
SQLQuery1.SQL.Add('"BID" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"OYADI" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME1" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME2" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME3" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME4" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAME5" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"GAMETOP" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');

SQLQuery1.SQL.Add('PRIMARY KEY ("ID"))');
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;

//Generator oluşturuluyor
Try
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE GENERATOR "GEN_T1_ID"');
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;
Finally
SQLQuery1.Close;
end;


//Now we create a trigger:
Try
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TRIGGER T1_BI FOR T1 ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_T1_ID, 1); END  ' );
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;
Finally
SQLQuery1.Close;
end;




SQLTransaction1.CommitRetaining;
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


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 306 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