ibsql

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

ibsql

Mesaj gönderen selman »

S.A
arkadaşlar öncelikler cumanız mübarek olsun diyerek öyle bir şey sormak istiyorum
ibsqlin open komutu neden çalışmaz
yani
ibsql1.close;
ibsql1.open;
dediğimde
ibsql1.open; da hata veriyr..
herkese kolay gelsin
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

hatanın ne olduğunu yazabilir misiniz?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bir kayıt dondurecek query ler icin ibquery kullanın
ibsql sadece sonuc dondurmeyen sql komutları icin ve
ibsql.ExecSql gibi kullanılıyordu
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

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

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;
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
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
arkadaşım şu ibdatasetlerine, ibquerylerine bir isim versen daha iyi olmazmı.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

peki hocam bundan sonra isim veririz..size katılıyorum
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Hata veren satırı hangisi
gönderdiğin kodda oraya işaret koydunmu?
birde verdiği hata mesajı tam olark nedir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

birader muhtemelen parametre ile ilgili bir hata alıyordur.

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; 
daha onceki mesajlarımda bu konuda bir cevap yazmıstım.
viewtopic.php?p=92037&highlight=#92037
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

kodlarda herhangi bir hata felan olayı yok.
sadece ibsqlin içindeki sql kodlarının o anda çalıştırması lazım ki kullanıcı anında görebilsin .
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Kodunuz çok uzun ve birazcık düzensiz hepsini okuyamadım.

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 ) ');
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. )
Cevapla