Kayıt sırası değiştirme
Kayıt sırası değiştirme
Slm arkadaşlar.
Girmiş olduğum kayıtları dbgridte görüyoruz burada bir kayıt seçili ike yukarı ve aşağı butonu ile bir kaydın sıra yerini nasıl değiştirebiliriz.Yani istediğimiz kaydı istediğimiz sıraya alacağız.Ibdataset, IBQuery bleşenleri kullanıyorum.(Tabi girid sql ye yada tableya bağlı olabilir bunuda göz önüne alarak)
Girmiş olduğum kayıtları dbgridte görüyoruz burada bir kayıt seçili ike yukarı ve aşağı butonu ile bir kaydın sıra yerini nasıl değiştirebiliriz.Yani istediğimiz kaydı istediğimiz sıraya alacağız.Ibdataset, IBQuery bleşenleri kullanıyorum.(Tabi girid sql ye yada tableya bağlı olabilir bunuda göz önüne alarak)
s.a.
tabloya yeni bir alan ekleyeceksin. (atıyoru sırala diye).
bu alana kayıtların gridde görünmesini istediğin sırayı yazacaksın.
yukarı aşağı düğmeleri ile bu değerleri değiştireceksin.
tablonu sırala alanına göre sıralayacaksın.
kolay gelsin.
tabloya yeni bir alan ekleyeceksin. (atıyoru sırala diye).
bu alana kayıtların gridde görünmesini istediğin sırayı yazacaksın.
yukarı aşağı düğmeleri ile bu değerleri değiştireceksin.
tablonu sırala alanına göre sıralayacaksın.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
hocam bu dediğinizde olur ama ben buton aracılığı ile kayıtları sıralamak istiyorum.Çünkü kayıt sayısı çok olduğunda bu saralamayı yapmak zor olacak.Kayıt sırasını görerek kim kimden sonra gelmeliyi daha pratik yapmak istemiştim.Öneriniz için teşekkür ediyorum ama kullanıcı açısından iş zor olur diye düşünüyorum.
Kod: Tümünü seç
######################################################
########### Bu Kodlar Aşağı Taşı Butonuna ############
######################################################
procedure ....
var
a,b:string;
begin
a:= JvDotNetDBEdit13.text;
if QRY_PERSONEL.eof=false then QRY_PERSONEL.next;
b:= JvDotNetDBEdit13.text;
if a <> b then
begin
QRY_PERSONEL.edit;
JvDotNetDBEdit13.text:=a;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.prior;
QRY_PERSONEL.edit;
JvDotNetDBEdit13.text:=b;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.next;
end;
end;
end.
######################################################
########## Bu Kodlar Yukarı Taşı Butonuna ############
######################################################
procedure ....
var
a,b:string;
begin
a:= JvDotNetDBEdit13.text;
if QRY_PERSONEL.eof=false then QRY_PERSONEL.prior;
b:= JvDotNetDBEdit13.text;
if a <> b then
begin
QRY_PERSONEL.edit;
JvDotNetDBEdit13.text:=a;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.next;
QRY_PERSONEL.edit;
JvDotNetDBEdit13.text:=b;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.prior;
end;
end;
end.
QRY_PERSONEL (Ibdataset)
bu kod paradox da table kaydında kayıt yerini değiştiriyor.Ama firebird de çalışmıyor.Bu konuda yardımlarınızı bekliyorum.Teşekkür ediyorum
s.a.
arkadaşım bu kodlar benim dediğim işlemi yapıyor.
bunlar senin yazdığın kodlar ise hata veriyormu? eğer hata vermiyorsa kapatıp açınca sıralama işlemi yapıyormu. Tabloların refresh edilmesi gerekiyor olabilir.
arkadaşım bu kodlar benim dediğim işlemi yapıyor.
bunlar senin yazdığın kodlar ise hata veriyormu? eğer hata vermiyorsa kapatıp açınca sıralama işlemi yapıyormu. Tabloların refresh edilmesi gerekiyor olabilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Aslında buradaki mantık şu; eğer kullanılan Grid in sıralama özelliği yoksa kayıtlar tablodaki aktif anahtar alanının sırasında gelecektır. Sıralamayı ne şekilde olursa olsun değiştirmek istediğinizde tablodaki ilgili anahtar/indeks alanında istediğiniz yere gelecek şekilde anahtar bilgilerini değiştirmeniz gerekir. İllaki grid üzerinde olması isteniyorsa StringGrid e okunup eklenen kayıtlar dediğiniz gibi satır değiştirme şeklinde yerleri değiştirilebilir 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Benim böyle birşeye ihtiyacım olmuştu programımın bir çok yerinde. Onun için genel bir SP_SIRA_UPDATE isimli bir stored procedure oluşturdum. Bu fonksiyon aldığı parametreye göre SIRA fieldinin değerinin bir üstteki veya alttaki kayıdın değeriyle değiştiriyordur. Böylece sırası değişmiş oluyordu. Ve SIRA fieldine sahip her tablo'nun before insert triggerına son SIRA numarasını vermesi için kodlar yazdım.
Bide şöyle bir durum var, sıralama bütün tablo olarak değil, o tablonun selectlenmiş bir kısmı arasındadad olabilir. Bu durumlarıda düşündüm.
Procedure'un parametre olarak aldığı FILTER_EXPRESSION bu işe yarıyor.
Stored Procedure :
Delphiden kullanımı için procedure
örnek kullanım :
Yukarıdaki kod, stok tablosundaki kullanıcının seçtiği kaydı (Qstoktaki yani), cinsi 5 olan mallar arasındaki sıraya göre bu kaydı yukarıyı alır. Son SIRA numarasını verdirtecek before insert triggerınıda unutmaman lazım. Bu triggerın yapısı senin yaptığın işe bağlı olduğu için örnek vermenin anlamı yok.
Çok uzun oldu, umarım anlaşılmıştır.
Kolay gelsin.
Bide şöyle bir durum var, sıralama bütün tablo olarak değil, o tablonun selectlenmiş bir kısmı arasındadad olabilir. Bu durumlarıda düşündüm.
Procedure'un parametre olarak aldığı FILTER_EXPRESSION bu işe yarıyor.
Stored Procedure :
Kod: Tümünü seç
SET TERM ^ ;
CREATE PROCEDURE SP_SIRA_UPDATE (
tablo varchar(30),
eleman_id integer,
filter_expression varchar(100),
operasyon smallint)
as
declare variable eleman_sira_no integer;
declare variable swap_eleman_sira_no integer;
declare variable swap_eleman_id integer;
begin
/* operasyon 1 ise UP 2 ise DOWN */
if (OPERASYON = 1) then
BEGIN
EXECUTE STATEMENT 'SELECT SIRA FROM ' || TABLO || ' WHERE ID = ' || ELEMAN_ID
INTO :ELEMAN_SIRA_NO;
EXECUTE STATEMENT 'SELECT FIRST 1 ID, SIRA FROM ' || TABLO || ' WHERE ('||TABLO||'.SIRA < ' || ELEMAN_SIRA_NO
|| ') AND ('|| FILTER_EXPRESSION ||') ORDER BY SIRA DESC'
INTO :SWAP_ELEMAN_ID, :SWAP_ELEMAN_SIRA_NO;
if ((SWAP_ELEMAN_ID is NULL) or (SWAP_ELEMAN_SIRA_NO is NULL) or (ELEMAN_SIRA_NO is NULL)) then exit;
EXECUTE STATEMENT 'UPDATE '|| TABLO ||
' SET SIRA = ' || SWAP_ELEMAN_SIRA_NO ||
' WHERE ID = ' || ELEMAN_ID;
EXECUTE STATEMENT 'UPDATE ' || TABLO ||
' SET SIRA = ' || ELEMAN_SIRA_NO ||
' WHERE ID = ' || SWAP_ELEMAN_ID;
END ELSE
if (OPERASYON=2) then
BEGIN
EXECUTE STATEMENT 'SELECT SIRA FROM ' || TABLO || ' WHERE ID = ' || ELEMAN_ID
INTO :ELEMAN_SIRA_NO;
EXECUTE STATEMENT 'SELECT FIRST 1 ID, SIRA FROM ' || TABLO || ' WHERE ('||TABLO||'.SIRA > ' || ELEMAN_SIRA_NO
|| ') AND ('|| FILTER_EXPRESSION ||') ORDER BY SIRA ASC'
INTO :SWAP_ELEMAN_ID, :SWAP_ELEMAN_SIRA_NO;
if ((SWAP_ELEMAN_ID is NULL) or (SWAP_ELEMAN_SIRA_NO is NULL) or (ELEMAN_SIRA_NO is NULL)) then exit;
EXECUTE STATEMENT 'UPDATE '|| TABLO ||
' SET SIRA = ' || SWAP_ELEMAN_SIRA_NO ||
' WHERE ID = ' || ELEMAN_ID;
EXECUTE STATEMENT 'UPDATE ' || TABLO ||
' SET SIRA = ' || ELEMAN_SIRA_NO ||
' WHERE ID = ' || SWAP_ELEMAN_ID;
END
end^
SET TERM ; ^
Kod: Tümünü seç
procedure TF_ETDUZENLE.SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
begin
// SIRA_UPDATE_SQL : IBSQL nesnesi
if not assigned(SIRA_UPDATE_SQL) then exit;
with SIRA_UPDATE_SQL do
begin
Close;
Sql.Clear;
Sql.Add('EXECUTE PROCEDURE SP_SIRA_UPDATE(:TABLO,:ELEMAN_ID,:FILTER_EXP,:OPERASYON)');
ParamCheck := true;
ParamByName('TABLO').AsString := Tablo;
ParamByName('ELEMAN_ID').AsInteger := Eleman_ID;
ParamByName('FILTER_EXP').asstring := Filter_expression;
ParamByName('OPERASYON').AsShort := Operasyon;
ExecQuery;
end;
end;
Kod: Tümünü seç
SIRA_UPDATE('STOK', QStok.fieldbyname('ID').asinteger,'CINSI=5', 1);
Çok uzun oldu, umarım anlaşılmıştır.
Kolay gelsin.
sy undefined biraz daha açılayıcı olabilrmisiniz.Ben tablomda SIRA_NO alanına kaydet butonu ne
kodu ile sıra numarası verdiriyorum.Fakat daha sonra yukarı ve aşağı butonu ile bu kayıtların yerini değiştirmek için bu butonların kodları ne olmalı.
//Kaydı Bir Yukarı taşıma
Yukarda belirttiğim kodlama benim işimi görmüyor.Daha doğrusu taşıyor ama bir satır sonrası yok.Firebird ve delphi tarafı durumunu biraz daha açsanız.Tek tek bölüm bölüm kodlarını nerelere nasıl oturtacağımız konusundad da bilgi verirseniz çok sevinirim
Kod: Tümünü seç
var
a:integer;
b:String;
begin
QRY_PERSONEL.edit;
QRY_PERSONEL.post;
QRY_PERSONEL.refresh;
QRY_PERSONEL.first;
for a:=1 to QRY_PERSONEL.recordcount do
begin
QRY_PERSONEL.edit;
QRY_PERSONEL.FieldByName('SIRA_NO').Value:=inttostr(a);
QRY_PERSONEL.post;
QRY_PERSONEL.next;
end;
//Kaydı Bir Yukarı taşıma
Kod: Tümünü seç
var
a,b:string;
begin
a:= QRY_PERSONEL.fieldbyname('SIRA_NO').asstring;
if IBQuery10.eof=false then QRY_PERSONEL.prior;
b:= QRY_PERSONEL.fieldbyname('SIRA_NO').asstring;
if a <> b then
begin
QRY_PERSONEL.edit;
QRY_PERSONEL.fieldbyname('SIRA_NO').asstring:=a;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.next;
QRY_PERSONEL.edit;
QRY_PERSONEL.fieldbyname('SIRA_NO').asstring:=b;
QRY_PERSONEL.post;
IBTransaction1.CommitRetaining;
QRY_PERSONEL.prior;
end;
Delphi tarafından numara verdirtmiyorum. Galiba sıralama olayı senin programının yapısında bütün tablo arasında oluyor. Yani tablonun selectlenmiş bir kısmı arasında değil. Bende örneğimi buna göre vericem.
Numara verdirtme trigger ile oluyor. Aşağıdaki örnek ET_DOSYA tablosuna eklenen her kayda son SIRA numarasını veriyor. Eğer hiç kayıt yoksa 0 veriyor. Delphi tarafından uğraşmana gerek yok bunun için.
Bir önceki mesajımdaki verdiğim delphi tarafındaki örneği birazdaha anlaşılır yapayım
Mesela Tablomuz STOK olsun. Program tarafından tabloyu çektiğimiz nesne QStok TIBQUERY'si olsun. Kullanıcının grid'te bir recordu seçtiğini düşünüyoruz. Aşağıdaki kod, seçili olan kaydın sırasını değiştirir.
Yukarı Buttonu için kod:
Aşağı butonu için
Filter_expression parametresi niye 1=1 diye sorabilirsin. Çünkü herhangi bir filtrelemeye gerek yok senin için. Eğer tablonun belli bir filtrelenmiş result'ında yapmak istiyorsan sıralama olayını bunu işine uygun olarak değiştirmen gerekli. Ama şu an bir görevi yok, onun için herzaman true döndürecek bir expression yazdım.
Numara verdirtme trigger ile oluyor. Aşağıdaki örnek ET_DOSYA tablosuna eklenen her kayda son SIRA numarasını veriyor. Eğer hiç kayıt yoksa 0 veriyor. Delphi tarafından uğraşmana gerek yok bunun için.
Kod: Tümünü seç
CREATE TRIGGER ET_DOSYA_BI_SIRA FOR ET_DOSYA
ACTIVE BEFORE INSERT POSITION 1
AS
DECLARE VARIABLE MAXSIRA INTEGER;
begin
if (NEW.SIRA IS NULL) then
BEGIN
SELECT coalesce(MAX(SIRA),0)+1 FROM ET_DOSYA INTO NEW.SIRA;
END
end
Kod: Tümünü seç
procedure TF_ETDUZENLE.SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
var
SIRA_UPDATE_SQL:TIBSQL;
begin
if not assigned(SIRA_UPDATE_SQL) then
SIRA_UPDATE_SQL := TIBSQL.CREATE(self);
with SIRA_UPDATE_SQL do
begin
Close;
Sql.Clear;
Sql.Add('EXECUTE PROCEDURE SP_SIRA_UPDATE(:TABLO,:ELEMAN_ID,:FILTER_EXP,:OPERASYON)');
ParamCheck := true;
ParamByName('TABLO').AsString := Tablo;
ParamByName('ELEMAN_ID').AsInteger := Eleman_ID;
ParamByName('FILTER_EXP').asstring := Filter_expression;
ParamByName('OPERASYON').AsShort := Operasyon;
ExecQuery;
end;
end;
Yukarı Buttonu için kod:
Kod: Tümünü seç
SIRA_UPDATE('STOK', QStok.fieldbyname('ID').asinteger,'1=1', 1);
Kod: Tümünü seç
SIRA_UPDATE('STOK', QStok.fieldbyname('ID').asinteger,'1=1', 2);
Hocam cevep için çok teşekkür ediyorum.Triger olayı çok iyi oldu
Ama yazmışolduğunuz.procedure yi kendi verilerime uyarlayamadım bir türlü
tablo adı : TBL_PERSONEL ve alan adları
PERSOEL_ID (pk)
ADI_SOYADI (string)
GOREVI (string)
BRANSI (string)
HESAP_NO (string)
DERS_SAATI (integer)
SIRA_NO (integer)
IBQuery10
QRY_PERSONEL (IBDataset) bileşenlerim
kodunu firebird de ekledim ama üzerinde hiç bir değişiklik yapmadım.
yazdığınız procedure çalışıyor
delphi tarafında yazılan procedure
(TF_ETDUZENLE...... hata aldım bende SIRA_UPDATE olarak kullandım)
var
SIRA_UPDATE_SQL:TIBSQL; //Burayı anlamadım
begin
if not assigned(SIRA_UPDATE_SQL) then
SIRA_UPDATE_SQL := TIBSQL.CREATE(self);// burada self le ilgili hata alıyorum
[Error] Bordro.pas(882): Undeclared identifier: 'self'
TIBSQL dediğiniz
IBSQL
IBDataSet
IBQuery
bu bileşenlerden hangisi.
Ama yazmışolduğunuz.procedure yi kendi verilerime uyarlayamadım bir türlü
tablo adı : TBL_PERSONEL ve alan adları
PERSOEL_ID (pk)
ADI_SOYADI (string)
GOREVI (string)
BRANSI (string)
HESAP_NO (string)
DERS_SAATI (integer)
SIRA_NO (integer)
IBQuery10
QRY_PERSONEL (IBDataset) bileşenlerim
Kod: Tümünü seç
SET TERM ^ ;
CREATE PROCEDURE SP_SIRA_UPDATE (
tablo varchar(30),
eleman_id integer,
filter_expression varchar(100),
operasyon smallint)
as
declare variable eleman_sira_no integer;
declare variable swap_eleman_sira_no integer;
declare variable swap_eleman_id integer;
begin
/* operasyon 1 ise UP 2 ise DOWN */
if (OPERASYON = 1) then
BEGIN
EXECUTE STATEMENT 'SELECT SIRA FROM ' || TABLO || ' WHERE ID = ' || ELEMAN_ID
INTO :ELEMAN_SIRA_NO;
EXECUTE STATEMENT 'SELECT FIRST 1 ID, SIRA FROM ' || TABLO || ' WHERE ('||TABLO||'.SIRA < ' || ELEMAN_SIRA_NO
|| ') AND ('|| FILTER_EXPRESSION ||') ORDER BY SIRA DESC'
INTO :SWAP_ELEMAN_ID, :SWAP_ELEMAN_SIRA_NO;
if ((SWAP_ELEMAN_ID is NULL) or (SWAP_ELEMAN_SIRA_NO is NULL) or (ELEMAN_SIRA_NO is NULL)) then exit;
EXECUTE STATEMENT 'UPDATE '|| TABLO ||
' SET SIRA = ' || SWAP_ELEMAN_SIRA_NO ||
' WHERE ID = ' || ELEMAN_ID;
EXECUTE STATEMENT 'UPDATE ' || TABLO ||
' SET SIRA = ' || ELEMAN_SIRA_NO ||
' WHERE ID = ' || SWAP_ELEMAN_ID;
END ELSE
if (OPERASYON=2) then
BEGIN
EXECUTE STATEMENT 'SELECT SIRA FROM ' || TABLO || ' WHERE ID = ' || ELEMAN_ID
INTO :ELEMAN_SIRA_NO;
EXECUTE STATEMENT 'SELECT FIRST 1 ID, SIRA FROM ' || TABLO || ' WHERE ('||TABLO||'.SIRA > ' || ELEMAN_SIRA_NO
|| ') AND ('|| FILTER_EXPRESSION ||') ORDER BY SIRA ASC'
INTO :SWAP_ELEMAN_ID, :SWAP_ELEMAN_SIRA_NO;
if ((SWAP_ELEMAN_ID is NULL) or (SWAP_ELEMAN_SIRA_NO is NULL) or (ELEMAN_SIRA_NO is NULL)) then exit;
EXECUTE STATEMENT 'UPDATE '|| TABLO ||
' SET SIRA = ' || SWAP_ELEMAN_SIRA_NO ||
' WHERE ID = ' || ELEMAN_ID;
EXECUTE STATEMENT 'UPDATE ' || TABLO ||
' SET SIRA = ' || ELEMAN_SIRA_NO ||
' WHERE ID = ' || SWAP_ELEMAN_ID;
END
end^
SET TERM ; ^
yazdığınız procedure çalışıyor
delphi tarafında yazılan procedure
Kod: Tümünü seç
procedure SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
var
SIRA_UPDATE_SQL:TIBSQL;
begin
if not assigned(SIRA_UPDATE_SQL) then
SIRA_UPDATE_SQL := TIBSQL.CREATE(self);
with SIRA_UPDATE_SQL do
begin
Close;
Sql.Clear;
Sql.Add('EXECUTE PROCEDURE SP_SIRA_UPDATE(:TABLO,:ELEMAN_ID,:FILTER_EXP,:OPERASYON)');
ParamCheck := true;
ParamByName('TABLO').AsString := Tablo;
ParamByName('ELEMAN_ID').AsInteger := Eleman_ID;
ParamByName('FILTER_EXP').asstring := Filter_expression;
ParamByName('OPERASYON').AsShort := Operasyon;
ExecQuery;
end;
end;
var
SIRA_UPDATE_SQL:TIBSQL; //Burayı anlamadım
begin
if not assigned(SIRA_UPDATE_SQL) then
SIRA_UPDATE_SQL := TIBSQL.CREATE(self);// burada self le ilgili hata alıyorum
[Error] Bordro.pas(882): Undeclared identifier: 'self'
TIBSQL dediğiniz
IBSQL
IBDataSet
IBQuery
bu bileşenlerden hangisi.
SIRA_UPDATE procedure'unu üzerinde çalıştığın formun procedure'u olarak ayarla. Yani Tfom1.SIRA_UPDATE olsun.SIRA_UPDATE_SQL := TIBSQL.CREATE(self);// burada self le ilgili hata alıyorum
Sence hangisiTIBSQL dediğiniz
IBSQL
IBDataSet
IBQuery
bu bileşenlerden hangisi.

TIBSQL görsel olmayan, dataset özelliği taşımayan bir nesne. Tek query çalıştırmak için kullanıyorum.
Hocam
IBSQL olduğunu anladımda hatta onla ilgili de değiştirdim kodu hata verince şüphelendim.Formum Form3 ve kodları aşağıdaki şekilde yazıyorum
satırında hata alıyorum
[Error] Bordro.pas(877): ';' expected but '.' found
[Error] Bordro.pas(883): Undeclared identifier: 'self'
[Error] Bordro.pas(890): Undeclared identifier: 'Tablo'
[Error] Bordro.pas(891): Undeclared identifier: 'Eleman_ID'
[Error] Bordro.pas(892): Undeclared identifier: 'Filter_expression'
[Error] Bordro.pas(893): Undeclared identifier: 'Operasyon'
[Error] Bordro.pas(899): Undeclared identifier: 'SIRA_UPDATE'
[Error] Bordro.pas(903): Undeclared identifier: 'SIRA_UPDATE'
SIRA_UPDATE olarak düzenlediğimde
IBSQL1:=TIBSQL.CREATE(self); satırında hata alıyorum.
(IBSQL1 bağlantıları tamam)
IBSQL olduğunu anladımda hatta onla ilgili de değiştirdim kodu hata verince şüphelendim.Formum Form3 ve kodları aşağıdaki şekilde yazıyorum
Kod: Tümünü seç
procedure TFom3.SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
var
IBSQL1:TIBSQL;
begin
if not assigned(IBSQL1) then
IBSQL1:=TIBSQL.CREATE(self);
with IBSQL1 do
begin
Close;
Sql.Clear;
Sql.Add('EXECUTE PROCEDURE SP_SIRA_UPDATE(:TABLO,:ELEMAN_ID,:FILTER_EXP,:OPERASYON)');
ParamCheck := true;
ParamByName('TABLO').AsString := Tablo;
ParamByName('ELEMAN_ID').AsInteger := Eleman_ID;
ParamByName('FILTER_EXP').asstring := Filter_expression;
ParamByName('OPERASYON').AsShort := Operasyon;
ExecQuery;
end;
end;
Kod: Tümünü seç
procedure TFom3.SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
[Error] Bordro.pas(877): ';' expected but '.' found
[Error] Bordro.pas(883): Undeclared identifier: 'self'
[Error] Bordro.pas(890): Undeclared identifier: 'Tablo'
[Error] Bordro.pas(891): Undeclared identifier: 'Eleman_ID'
[Error] Bordro.pas(892): Undeclared identifier: 'Filter_expression'
[Error] Bordro.pas(893): Undeclared identifier: 'Operasyon'
[Error] Bordro.pas(899): Undeclared identifier: 'SIRA_UPDATE'
[Error] Bordro.pas(903): Undeclared identifier: 'SIRA_UPDATE'
SIRA_UPDATE olarak düzenlediğimde
IBSQL1:=TIBSQL.CREATE(self); satırında hata alıyorum.
(IBSQL1 bağlantıları tamam)
s.a.
kardeş sanırım gönderdiğin procedureden bir önceki procedure/fonksiyon da end in sonunda ; yerine . koymuşsun yada onun gibi bişeyler var.
877. satırı kontrol et. sıkıntın o satırda başlıyor. self olayı 883. satırda.
kolay gelsin.
kardeş sanırım gönderdiğin procedureden bir önceki procedure/fonksiyon da end in sonunda ; yerine . koymuşsun yada onun gibi bişeyler var.
877. satırı kontrol et. sıkıntın o satırda başlıyor. self olayı 883. satırda.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Syn undefined Form yerine fom yazmışım özür diliyorum.Ama aşağıdaki şekilde procedure düzeltim (TForm olarak) ama yine hata alıyorum IBSQL1 olarak sql bileşenim forma eklemiştim önceden gerekli IBTransaction ve IBDatabase ini bağladım Tstrin ini yazdım ama yine aynı hatayı alıyorum yani procedure ü çalıştıramadım
hata
Kod: Tümünü seç
procedure TForm3.SIRA_UPDATE(Tablo: string; Eleman_ID: integer;
Filter_Expression: string; Operasyon: smallint);
var
IBSQL1:TIBSQL;
begin
if not assigned(IBSQL1) then
IBSQL1:=TIBSQL.CREATE(self);
with IBSQL1 do
begin
Close;
Sql.Clear;
Sql.Add('EXECUTE PROCEDURE SP_SIRA_UPDATE(:TABLO,:ELEMAN_ID,:FILTER_EXP,:OPERASYON)');
ParamCheck := true;
ParamByName('TABLO').AsString := Tablo;
ParamByName('ELEMAN_ID').AsInteger := Eleman_ID;
ParamByName('FILTER_EXP').asstring := Filter_expression;
ParamByName('OPERASYON').AsShort := Operasyon;
ExecQuery;
end;
end;
Kod: Tümünü seç
[Error] Bordro.pas(879): Undeclared identifier: 'SIRA_UPDATE' // procedure TForm3.SIRA_UPDATE olan satır
[Error] Bordro.pas(879): ';' expected but '(' found
[Error] Bordro.pas(885): Undeclared identifier: 'self'
[Error] Bordro.pas(892): Undeclared identifier: 'Tablo'
[Error] Bordro.pas(893): Undeclared identifier: 'Eleman_ID'
[Error] Bordro.pas(894): Undeclared identifier: 'Filter_expression'
[Error] Bordro.pas(895): Undeclared identifier: 'Operasyon'
[Error] Bordro.pas(901): Undeclared identifier: 'SIRA_UPDATE'
[Error] Bordro.pas(905): Undeclared identifier: 'SIRA_UPDATE'