ibsql
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ilginiz için tşkederim
aslında ben ibsql1.close;
ibsq1.open;
tarzı çalışırsa proğramım runtime anında refresh olacağını düşünmüştüm..
sorun aslında şu
bu kodla sipariş iptali yapmaktayım fakat ibsqle yazdığım sql kodları proğram runtime halinde çalışmadığından sipariş iptal durumunu karıştırıyor.ancak proğramı kapatıp tekrar açarsanız ve o butona tekrar basarsanız ibsql refresh olmaktadır.sorun bu yani ilk durumda neden sql kodlarını çalıştırmıyor.
herkese iyi çalışmalar
aslında ben ibsql1.close;
ibsq1.open;
tarzı çalışırsa proğramım runtime anında refresh olacağını düşünmüştüm..
sorun aslında şu
Kod: Tümünü seç
var
iptno:integer;
sip_toplami:double;
SIPARIS_KAYIT_NO:INTEGER;
begin
IPTNO:=0;
iptno:=datamodule3.psimas.fieldbyname('ID').AsInteger;//100
sip_toplami:=0;
SIPARIS_KAYIT_NO:=datamodule3.IBDataSet52.FIELDBYNAME('ID').AsInteger;
// showmessage(inttostr(iptno));
DATAMODULE3.IBDataSet51.Close;
datamodule3.IBDataSet51.selectSQL.clear;
datamodule3.IBDataSet51.selectSQL.add('select * from PSIPMAS WHERE ID=:IPTALEDILECEKNO ');
datamodule3.IBDataSet51.ParamByName('IPTALEDILECEKNO').AsInteger:=IPTNO;
datamodule3.IBDataSet51.Open;
DATAMODULE3.IBDataSet52.Close;
datamodule3.IBDataSet52.selectSQL.clear;
datamodule3.IBDataSet52.selectSQL.add('select * from PSIPARIS WHERE DID=:ID ');
datamodule3.IBDataSet52.Open;
while not datamodule3.IBDataSet52.Eof DO
begin
// showmessage('buraya donguye girdin');
sip_toplami:=0;
SIPARIS_KAYIT_NO:=datamodule3.IBDataSet52.FIELDBYNAME('ID').AsInteger;
DATAMODULE3.IBDataSet55.Close;
datamodule3.IBDataSet55.selectSQL.clear;
datamodule3.IBDataSet55.selectSQL.add('select sum(miktar) from sgir WHERE SIP_ID=:SATIRNO ');
datamodule3.IBDataSet55.ParamByName('SATIRNO').AsInteger:=SIPARIS_KAYIT_NO;
DATAMODULE3.IBDataSet55.Open;
sip_toplami:=DATAMODULE3.ibdataset55.fieldbyname('SUM').AsFloat;
// SHOWMESSAGE('TOPLAM SİPARIŞ RAKAMI :'+FLOATTOSTR(SIP_TOPLAMI));
// EXIT;
// showmessage ('duzeltmeye girilecek');
DataModule3.ibsql51.Close;
DataModule3.ibsql51.SQL.Clear;
DataModule3.ibsql51.SQL.Add('UPDATE PSIPARIS SET BEKLENEN=BEKLENEN+:RAKAMI,KAR=KAR-:KARIPT where ID=:IDSI ');
DataModule3.ibsql51.ParamByName('RAKAMI').AsInteger:=datamodule3.IBDataSet55.FIELDBYNAME('SUM').AsInteger;
DataModule3.ibsql51.ParamByName('KARIPT').AsInteger:=datamodule3.IBDataSet55.FIELDBYNAME('SUM').AsInteger;
DataModule3.ibsql51.ParamByName('IDSI').AsInteger:=datamodule3.IBDataSet52.FIELDBYNAME('ID').AsInteger;
//showmessage('idsi :'+inttostr(datamodule3.IBDataSet52.FIELDBYNAME('ID').AsInteger));
DataModule3.ibsql51.ExecQuery;
//showmessage('duzeltme bitti');
DataModule3.ibtransaction52.CommitRetaining;
DataModule3.ibtransaction1.CommitRetaining;
datamodule3.IBDataSet52.Next;
end; // while not datamodule3.IBDataSet52.Eof then
//showmessage ('dongu bitti');
//DataModule3.ibsql51.Close;
//DataModule3.ibsql51.SQL.Clear;
//DataModule3.ibsql51.SQL.Add('delete from SGIR WHERE KARS_NOSU=:IPTALEDILECEKNO ');
//DataModule3.ibsql51.ParamByName('IPTALEDILECEKNO').AsInteger:=IPTNO;
//DataModule3.ibsql51.ExecQuery;
DataModule3.ibsql51.Close;
DataModule3.ibsql51.SQL.Clear;
DataModule3.ibsql51.SQL.Add('delete from SGIRMAS WHERE ID IN (SELECT DID FROM SGIR WHERE SIP_ID=:IPTALEDILECEKNO ) ');
DataModule3.ibsql51.ParamByName('IPTALEDILECEKNO').AsInteger:=SIPARIS_KAYIT_NO;
DataModule3.ibsql51.ExecQuery;
DataModule3.ibtransaction52.CommitRetaining;
DataModule3.ibtransaction1.CommitRetaining;
DataModule3.ibsql51.Close;
DataModule3.ibsql51.SQL.Clear;
DataModule3.ibsql51.SQL.Add('delete from PSIPMAS WHERE ID IN (SELECT DID FROM PSIPARIS WHERE KARS_NOSU=:IPTALEDILECEKNO ) ');
DataModule3.ibsql51.ParamByName('IPTALEDILECEKNO').AsInteger:=SIPARIS_KAYIT_NO;
DataModule3.ibsql51.ExecQuery;
DataModule3.ibtransaction52.CommitRetaining;
DataModule3.ibtransaction1.CommitRetaining;
DataModule3.ibtransaction52.Active:=FALSE;
DataModule3.ibtransaction1.Active:=FALSE;
// DATAMODULE3.PSIMAS.DELETE;
// showmessage ('bekliyorum. ESKİ AYARLARI YERİNE GETİRECEĞİM. ') ;
// **************** eski sorguları yerine yazma
DataModule3.IBTransaction52.Active:=true;
DataModule3.IBTransaction1.Active:=true;
DataModule3.psimas.Close;
DataModule3.psimas.SelectSQL.Clear;
DataModule3.psimas.SelectSQL.Add('select*from psipmas where sipno is not null order by id desc');
datamodule3.psimas.Open;
DataModule3.psiparis.Close;
DataModule3.psiparis.Open;
DATAMODULE3.IBDataSet51.Close;
datamodule3.IBDataSet51.selectSQL.clear;
datamodule3.IBDataSet51.selectSQL.add(' select * from PSIPMAS ');
datamodule3.IBDataSet51.selectSQL.add('where id in ( SELECT did FROM PSIPARIS group by did ');
datamodule3.IBDataSet51.selectSQL.add(' having sum(beklenen)<>0 ) ');
datamodule3.IBDataSet51.selectSQL.add('order by termin ');
DataModule3.IBDataSet51.Open;
DATAMODULE3.IBDataSet52.Close;
datamodule3.IBDataSet52.selectSQL.clear;
datamodule3.IBDataSet52.selectSQL.add('select * from PSIPARIS where did=:id and beklenen>0 ');
DATAMODULE3.IBDataSet52.Open;
DATAMODULE3.IBDataSet55.Close;
datamodule3.IBDataSet55.selectSQL.clear;
datamodule3.IBDataSet55.selectSQL.add('select * from SGIR where did=:id ');
datamodule3.IBDataSet55.Open;
DataModule3.psiparis.Close;
DataModule3.psiparis.Open;
//DataModule3.psimas.Close;
//DataModule3.psimas.Open;
DataModule3.sgir.Close;
DataModule3.sgir.Open;
DataModule3.IBDataSet51.Close;
DataModule3.IBDataSet51.Open;
DataModule3.IBDataSet52.Close;
DataModule3.IBDataSet52.Open;
DataModule3.IBDataSet54.Close;
DataModule3.IBDataSet54.Open;
DataModule3.IBDataSet55.Close;
DataModule3.IBDataSet55.Open;
DataModule3.IBDataSet53.Close;
DataModule3.IBDataSet53.Open;
DataModule3.IBTransaction1.CommitRetaining;
DataModule3.ibtransaction52.CommitRetaining;
DataModule3.IBTransaction53.CommitRetaining;
DataModule3.IBTransaction54.CommitRetaining;
DataModule3.IBTransaction57.CommitRetaining;
DataModule3.IBTransaction56.CommitRetaining;
DataModule3.IBTransaction55.CommitRetaining;
DataModule3.IBTransaction1.CommitRetaining;
DataModule3.IBQuery32.Close;
DataModule3.IBQuery32.Open;
DataModule3.IBQuery1.Close;
DataModule3.IBQuery1.Open;
DataModule3.IBQuery26.Close;
DataModule3.IBQuery26.Open;
DataModule3.IBQuery25.Close;
DataModule3.IBQuery25.Open;
DataModule3.IBQuery39.Close;
DataModule3.IBQuery39.Open;
DataModule3.IBQuery32.Close;
DataModule3.IBQuery32.Open;
DataModule3.IBQuery28.Close;
DataModule3.IBQuery28.Open;
herkese iyi çalışmalar
birader muhtemelen parametre ile ilgili bir hata alıyordur.
daha onceki mesajlarımda bu konuda bir cevap yazmıstım.
viewtopic.php?p=92037&highlight=#92037
Kod: Tümünü seç
DataModule3.ibsql51.SQL.Add('delete from PSIPMAS WHERE ID IN (SELECT DID FROM PSIPARIS WHERE KARS_NOSU=:IPTALEDILECEKNO ) ');
DataModule3.ibsql51.ParamByName('IPTALEDILECEKNO').AsInteger:=SIPARIS_KAYIT_NO;
viewtopic.php?p=92037&highlight=#92037
ÜŞENME,ERTELEME,VAZGEÇME
Kodunuz çok uzun ve birazcık düzensiz hepsini okuyamadım.
Sanırım sizin asıl sorununuz forumda defalarca konu olmuş REFRESH sorunu.
Sanırım sorun yaşadığınız yerlerden biri burası. Burasının düzgün çalışması için PSIPARIS tablosu üzerinde daha önce işlem yapılmışsa bunların COMMIT edilmesi gerek (Öyleya KARS_NOSU=:IPTALEDILECEKNO eşitliğini sağlayacak değer girilmiş ama tablo commit edilmemeiş olabilir). Ayrıca (daha önce @TERMINATOR un bahsettiği bir konu), COMMIT yada COMMITRETAINING komutlarını çağırmış olmanız illa kayıtların COMMIT edileceği anlamına gelmiyor. COMMIT işleminin başarı ile yapıldığından emin olmak lazım.
Sorununuzu doğru anladığımdan emin değilim eğer yanlışsa daha ayrıntılı bilgi vermeniz gerekecek. (ilgili işlemin tüm senaryosunu yazmanız gerebilir. )
Sanırım sizin asıl sorununuz forumda defalarca konu olmuş REFRESH sorunu.
Kod: Tümünü seç
DataModule3.ibsql51.SQL.Add('delete from PSIPMAS WHERE ID IN (SELECT DID FROM PSIPARIS WHERE KARS_NOSU=:IPTALEDILECEKNO ) ');
Sorununuzu doğru anladığımdan emin değilim eğer yanlışsa daha ayrıntılı bilgi vermeniz gerekecek. (ilgili işlemin tüm senaryosunu yazmanız gerebilir. )