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.mrmarman yazdı:- Arkadaşlar olmayınca pes etmek yok.Nerde kaldı araştırmacı programcılık.
Delphi2005de hazırlanan projenin Delphi7 de çuvallaması
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
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...
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- 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 ?@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
- 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 ?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
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;
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 );
Kod: Tümünü seç
With dm.MuayeneDataset do begin
Active:=False;
SelectSQL.Clear;
SelectSQL.add( MynTazelemeSQL );
Paylaşmak istedim.
Herkese kolay gelsin.