WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

Delphi ile SGK nın hitap webservisinden bilgi çekiyoruz. Bu bilgiler array olarak TRemotable sınıfında geliyor. Buradaki bilgileri VirtualTable aktarmak istiyorum ama bir türlü olmuyor. Bilgisi olan arkadaşlardan yardım istiyorum.
Örnek Kodum:

Kod: Tümünü seç

var
  Hitap:Hitap4cWEBBean;
  HizmetCetveliBilgileri:ArrayOf_874792447_1713283813_nillable_HizmetCetveliServisBean;
  i: Integer;
  begin
      Hitap:=GetHitap4cWEBBean(true,'',webs);
      HizmetCetveliBilgileri:=Hitap.HizmetCetvelSorgula(kullanici,sifre,qrperbil.FieldByName('vatandaslikno').AsVariant);
      if HizmetCetveliBilgileri<>nil then
      begin
        i := 0;
        while HizmetCetveliBilgileri[i]<>nil do
        begin
          tryhata.Lines.Add(IntToStr(i)+')'+HizmetCetveliBilgileri[i].gorev);
          i:=i+1;
        end;
      end;
    end
 
Bu şekilde tek tek bilgileri çekebiliyorum ama arrayin içinde kaç tane kayıt olduğunu bilmediğimden access violation hatası veriyor. Arraya gelen bilgileri VirtualTable'ye direk aktaracak bi yöntem var mı acaba?
Şimdidien teşekkür ederim.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ertank »

mbayrak yazdı: 03 Oca 2018 01:28 Bu şekilde tek tek bilgileri çekebiliyorum ama arrayin içinde kaç tane kayıt olduğunu bilmediğimden access violation hatası veriyor.
Aşağıdaki şekilde tek tek okuyarak okuma yapabilirsiniz:

Kod: Tümünü seç

for I := Low(HizmetCetveliBilgileri) to High(HizmetCetveliBilgileri) do
Low() ve High() fonksiyonları sizin aray içindeki bütün bilgileri okumanızı sağlar. Diğer bir yöntem de aşağıdaki gibi olabilir:

Kod: Tümünü seç

for I := 0 to Pred(Length(HizmetCetveliBilgileri)) do
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ertank yazdı: 03 Oca 2018 01:52
mbayrak yazdı: 03 Oca 2018 01:28 Bu şekilde tek tek bilgileri çekebiliyorum ama arrayin içinde kaç tane kayıt olduğunu bilmediğimden access violation hatası veriyor.
Aşağıdaki şekilde tek tek okuyarak okuma yapabilirsiniz:

Kod: Tümünü seç

for I := Low(HizmetCetveliBilgileri) to High(HizmetCetveliBilgileri) do
Low() ve High() fonksiyonları sizin aray içindeki bütün bilgileri okumanızı sağlar. Diğer bir yöntem de aşağıdaki gibi olabilir:

Kod: Tümünü seç

for I := 0 to Pred(Length(HizmetCetveliBilgileri)) do
Cevabınız için teşekkür ederim. Bu bilgileri bu şekilde döngü üle almak yerine VirtualTable gibi bir datasete aktarabilir miyiz? Çünkü 10 civarı bu şekil ayrı sınıf var ve sütunları farklı. Tek tek uğraşmak yerine bir datasete aktaarbilirsem çok iyi olacak.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ertank »

Bilgim dahilinde kod yazarak döngü içinde okumanız gerekli.
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ismailkocacan »

Bir method yazıp, Array ve içindeki nesnelerin meta bilgilerine RTTI yardımıyla erişip, TDataSet sınıfının AppendRecord methodunu kullanarak ekleme yapabilirsiniz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ertank »

ismailkocacan yazdı: 04 Oca 2018 10:13 Bir method yazıp, Array ve içindeki nesnelerin meta bilgilerine RTTI yardımıyla erişip, TDataSet sınıfının AppendRecord methodunu kullanarak ekleme yapabilirsiniz.
Merhaba, bilinen küçük bir web servis için örnek bir kod paylaşabilir misiniz?
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ismailkocacan yazdı: 04 Oca 2018 10:13 Bir method yazıp, Array ve içindeki nesnelerin meta bilgilerine RTTI yardımıyla erişip, TDataSet sınıfının AppendRecord methodunu kullanarak ekleme yapabilirsiniz.
Evet bir küçük örmek verebilirseniz çok makbule geçecek.
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ismailkocacan »

Biraz yoğunum bu aralar, en yakında zamanda nasıl yapıldığında dair örnek yazarım.
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ismailkocacan yazdı: 09 Oca 2018 10:57 Biraz yoğunum bu aralar, en yakında zamanda nasıl yapıldığında dair örnek yazarım.
Teşekkür ederiz. Sabırsızlıkla bekliyoruz
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ismailkocacan yazdı: 04 Oca 2018 10:13 Bir method yazıp, Array ve içindeki nesnelerin meta bilgilerine RTTI yardımıyla erişip, TDataSet sınıfının AppendRecord methodunu kullanarak ekleme yapabilirsiniz.
Üztadım bi hala beklemedeyiz. Unutma bizleri :) Kolay gelsin
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ismailkocacan »

mbayrak yazdı: 15 Oca 2018 08:34
ismailkocacan yazdı: 04 Oca 2018 10:13 Bir method yazıp, Array ve içindeki nesnelerin meta bilgilerine RTTI yardımıyla erişip, TDataSet sınıfının AppendRecord methodunu kullanarak ekleme yapabilirsiniz.
Üztadım bi hala beklemedeyiz. Unutma bizleri :) Kolay gelsin
Unutmadım, fakat yoğunluktan fırsat bulamadım. :wink:
Ben yazana kadar, küçük bir ipucu daha vereyim. System.Rtti.TValue
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ismailkocacan »

Github'a yüklediğim örnekleri inceleyebilirsiniz.
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ismailkocacan yazdı: 16 Oca 2018 02:29 Github'a yüklediğim örnekleri inceleyebilirsiniz.
Zaman ayırdığınız için teşekkür ederim. Ben delphi 2010 kullanıyorum ve şu satırda
Adsız.png
Adsız.png (3.16 KiB) 3145 kere görüntülendi
[DCC Error] uhitapgonkisi.pas(444): E2010 Incompatible types: 'TVarRec' and 'TValue' hatasını alıyorum. Nette araştırdım ama herhangi bir convert fonksiyonu bulamadım. Bir bilginiz varsa yardımınızı bekliyorum.
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen ismailkocacan »

mbayrak yazdı: 16 Oca 2018 02:25
ismailkocacan yazdı: 16 Oca 2018 02:29 Github'a yüklediğim örnekleri inceleyebilirsiniz.
Zaman ayırdığınız için teşekkür ederim. Ben delphi 2010 kullanıyorum ve şu satırda
Adsız.png
[DCC Error] uhitapgonkisi.pas(444): E2010 Incompatible types: 'TVarRec' and 'TValue' hatasını alıyorum. Nette araştırdım ama herhangi bir convert fonksiyonu bulamadım. Bir bilginiz varsa yardımınızı bekliyorum.
Eklediğiniz görüntü çok küçük ya da ben de öyle görünüyor.
Hata mesajı TVarRec ve TValue veri tiplerinin uyumsuzluğu anlatıyor.
Berlin sürümü ile hazırladım.
mbayrak
Üye
Mesajlar: 21
Kayıt: 22 Ara 2011 12:41

Re: WebService TRemotable verilerini VirtualTable ye aktarmak nasıl yapılır

Mesaj gönderen mbayrak »

ismailkocacan yazdı: 16 Oca 2018 05:11
mbayrak yazdı: 16 Oca 2018 02:25
ismailkocacan yazdı: 16 Oca 2018 02:29 Github'a yüklediğim örnekleri inceleyebilirsiniz.
Zaman ayırdığınız için teşekkür ederim. Ben delphi 2010 kullanıyorum ve şu satırda
Adsız.png
[DCC Error] uhitapgonkisi.pas(444): E2010 Incompatible types: 'TVarRec' and 'TValue' hatasını alıyorum. Nette araştırdım ama herhangi bir convert fonksiyonu bulamadım. Bir bilginiz varsa yardımınızı bekliyorum.
Eklediğiniz görüntü çok küçük ya da ben de öyle görünüyor.
Hata mesajı TVarRec ve TValue veri tiplerinin uyumsuzluğu anlatıyor.
Berlin sürümü ile hazırladım.
Resimi satır arası göster dediğim için küçük almış sanırım. Tekrar yolluyorum. Delphi 2010 da bu tiplerin birbirine benzetilmesi ile ilgili bir çözüm bulabilir miyiz acaba.
Resim
Cevapla