Delphi2005de hazırlanan projenin Delphi7 de çuvallaması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Merhaba; Ben Variant tipli değişkenlere fazla sırtımı yaslamadan programlama yapmaya yönelmek zorunda kaldığım için bu tipi kullanırken ne gibi sorunlar çıkacağını az çok biliyorum ama çözüm konusunda yetersizim...
mrmarman yazdı:- Arkadaşlar olmayınca pes etmek yok. :lol: Nerde kaldı araştırmacı programcılık.
Belirttiğim yöntem pratik olan yoldan olmasa da problemin çözümü için başka yolu göstermektedir. Variant'lardan kaçma sebebimde yukarıda ki çıkan sorunlardı. Nerede nasıl davranacağının kesin bir kuralı yok. Gerçi Delphi2005 gibi yeni versiyonlarda bu problemlerin çoğu düzeltilmiş ama dediğim gibi bu tür sıkıntılardan sıyrılmak için Variantlardan kaçtım. Madem işin içinden çıkılamıyor, variant parametreler de tiplere dikkat edilerek işlemler çok dikkatli bir şekilde yapılmalıdır. Zira variant tipler bahsi geçtiği gibi çok çıtkırıldım bir yapısı vardır. Net bir çözüm ortaya çıkarsa da altın değerinde bir bilgiye daha kavuşacağız. Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@sabanakman yazdı:Zira variant tipler bahsi geçtiği gibi çok çıtkırıldım bir yapısı vardır. Net bir çözüm ortaya çıkarsa da altın değerinde bir bilgiye daha kavuşacağız
- Her ne kadar Value değeri Variant tipinde ise de olması gereken tipe önceden dönüştürün demeye çalışıyorum farklı bir şey değil ?

- Burada sunulan bir çözüm değil mi, çözüm buysa net değil mi ? Nasrettin hocanın ciğer hikayesi gibi oldu ama, kedi buradaysa ciğer nerede, ciğer buysa kedi nerede ?
Resim
Resim ....Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Neyse ciğeri bulalım da, bize o lazım :D
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Kod: Tümünü seç

MynTazelemeSQL :=  ' SELECT ' 
                   + ' MUAYENE.KAYITID' 
                   + ',MUAYENE.HASTAKODU' 
                   + ',HASTALAR.ADISOYADI' 
                   + ',MUAYENE.MUAYENETARIHI' 
                   + ',MUAYENE.DOKTOR' 
                   + ',MUAYENE.ANAMNMEZ' 
                   + ',MUAYENE.BULGULAR' 
                   + ',MUAYENE.TEDAVI' 
                   + ',MUAYENE.RAPOR' 
                   + ',MUAYENE.ILACLAR' 
                   + ',MUAYENE.NABIZ' 
                   + ',MUAYENE.ATES' 
                   + ',MUAYENE.TANSIYON' 
                   + ',MUAYENE.LABORATUVAR' 
                   + ',MUAYENE.SIRANO' 
                   + ',MUAYENE.TESHIS' 
                   + ',HASTALAR.RESIMYOL' 
                   + ' FROM MUAYENE, HASTALAR' 
                   + ' WHERE HASTALAR.KAYITID = MUAYENE.HASTAKODU'; 
  With dm.MuayeneDataset do begin 
    SelectSQL.Clear; 
    SelectSQL.add( MynTazelemeSQL ); 
    SelectSQL.Add(' and upper( HASTALAR.ADISOYADI ) like upper('+ QuotedStr(Arama.Text + '%') +')'); 
    SelectSQL.Add(' and MUAYENE.LABORATUVAR = :Par'); 
    SelectSQL.Add(' and MUAYENE.MUAYENETARIHI BETWEEN :BASLAMA AND :BITIS'); 
      ParamByName('Par').AsString   := '1'; //Yani lab tetkiki istenen hastalar 
      ParamByName('BASLAMA').AsDate := DtBaslama.Date; 
      ParamByName('BITIS').AsDate   := DtBitis.Date; 
    Active := True; 
  end;
Topik belki uzadı ama sonuç;

a)Yukarıdaki kod Delphi 2005 de IBDataset ile derlenirse aramalarda hata vermiyor, sonuç da döndürüyor.

b)Yukarıdaki kod Delphi 2005 de IBQuery ile derlenirse aramalarda hata vermiyor, sonuç da döndürüyor.
c)Yukarıdaki kod Delphi 7 de IBQuery ile derlenirse aramalarda hata vermiyor, sonuç da döndürüyor.

d)Yukarıdaki kod Delphi 7 de IBDataset ile derlenirse aramalarda dataseti kapatıyor.Sonuç Döndürmüyor.Ancak SelectSQL.Clear ifadesinden önce Dataset Close diyerek kapatılırsa hata vermiyor.Sonuçda döndürüyor.


Burada sanırım 2005 idesiyle gelen IBDataset bileşeni SelectSQL.Clear komutuyla içeriğindeki tüm SQL ifadesini temizliyor.Ancak Delphi 7 ile gelen IBDataset bileşeninde SelectSQL.Clear ifadesi tam olarak bunu gerçekleştiremiyor.Datasetin SQL Textini ShowMessage ile gösterdiğimde yada bir Memoya atadığımda null geliyor ama

Kod: Tümünü seç

With dm.MuayeneDataset do begin 
    SelectSQL.Clear; 
    SelectSQL.add( MynTazelemeSQL ); 
şeklindeki çalışmayan kodun

Kod: Tümünü seç

With dm.MuayeneDataset do begin
    Active:=False; 
    SelectSQL.Clear; 
    SelectSQL.add( MynTazelemeSQL ); 
şeklinde kullanılınca çalışması bu düşünceye itti.
Paylaşmak istedim.
Herkese kolay gelsin.
Cevapla