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 » 03 Oca 2018 12:28

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
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 03 Oca 2018 12:52

mbayrak yazdı:
03 Oca 2018 12: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 » 03 Oca 2018 01:21

ertank yazdı:
03 Oca 2018 12:52
mbayrak yazdı:
03 Oca 2018 12: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
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 03 Oca 2018 01:50

Bilgim dahilinde kod yazarak döngü içinde okumanız gerekli.

ismailkocacan
Üye
Mesajlar: 74
Kayıt: 25 Eyl 2011 05:11
Konum: Balıkesir
İletişim:

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

Mesaj gönderen ismailkocacan » 04 Oca 2018 09: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.

ertank
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

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

Mesaj gönderen ertank » 04 Oca 2018 11:55

ismailkocacan yazdı:
04 Oca 2018 09: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 » 09 Oca 2018 07:42

ismailkocacan yazdı:
04 Oca 2018 09: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: 74
Kayıt: 25 Eyl 2011 05:11
Konum: Balıkesir
İletişim:

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

Mesaj gönderen ismailkocacan » 09 Oca 2018 09:57

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 » 09 Oca 2018 02:32

ismailkocacan yazdı:
09 Oca 2018 09: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 » 15 Oca 2018 07:34

ismailkocacan yazdı:
04 Oca 2018 09: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: 74
Kayıt: 25 Eyl 2011 05:11
Konum: Balıkesir
İletişim:

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

Mesaj gönderen ismailkocacan » 15 Oca 2018 03:27

mbayrak yazdı:
15 Oca 2018 07:34
ismailkocacan yazdı:
04 Oca 2018 09: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: 74
Kayıt: 25 Eyl 2011 05:11
Konum: Balıkesir
İletişim:

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

Mesaj gönderen ismailkocacan » 16 Oca 2018 01:29

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 » 16 Oca 2018 01:25

ismailkocacan yazdı:
16 Oca 2018 01: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.18 KiB) 66 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: 74
Kayıt: 25 Eyl 2011 05:11
Konum: Balıkesir
İletişim:

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

Mesaj gönderen ismailkocacan » 16 Oca 2018 04:11

mbayrak yazdı:
16 Oca 2018 01:25
ismailkocacan yazdı:
16 Oca 2018 01: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 » 17 Oca 2018 07:18

ismailkocacan yazdı:
16 Oca 2018 04:11
mbayrak yazdı:
16 Oca 2018 01:25
ismailkocacan yazdı:
16 Oca 2018 01: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