Web servisden çekilen veri ile dataset doldurmak.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Web servisden çekilen veri ile dataset doldurmak.
Merhaba üstadlarım. C# ile yazılmış bir web servisden metodları çekebiliyor insert yapan metodla kayıt yapabiliyorum fakat select query döndüren bir methodla aldığım sonucu gridde gösterebilmem için bir datasete doldurmam gerek ve konu hakkında anlayabileceğim bir açıklama bulamadım. Yardımcı olursanız sevinirim.
Selam ve dua ile...
Selam ve dua ile...
Re: Web servisden çekilen veri ile dataset doldurmak.
Selectten dönen kayıtların türü nedir? Eğer IQueryable, IEnumerable veya IList tarzında birşey dönüyorsa döngüye sokup hepsini okuyabilirsin.
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Hocam Sql dataya bağlantı kurup marka isimli bir tablodan sadece marka alanını çekiyorum. HTTPRIO kullanmayı denedim daha değişik hatalar alıyorum. XML Mapping deneyeceğim fakat bildiğiniz daha kolay bir yöntem olursa mutlu olurum. Mesela döngüye nasıl alabilirim. Saygılar.
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Xml mapping ile veri almayı başardım. Vkamadan hocamın viewtopic.php?f=19&t=20424&start=0 makalesi çok yardımcı oldu. Ama bu aşamadan sonra uzak sql veritabanındaki prosedüre parametre gönderip cevabı almam gerekiyor webservis ile. Bu konuda tavsiyeniz varmı?
Re: Web servisden çekilen veri ile dataset doldurmak.
Servis Tarafındaki örnek kod
İstemci Tarafındaki Kod
Kod: Tümünü seç
public DataTable GetVehicleByRecno(int recno, int userno)
{
var ac = new AracController();
return ac.GetVehicleByRecno(recno, userno);
}
Kod: Tümünü seç
private void GetVehicleByRecno()
{
var c = new Service1Client();
DataTable dt = c.GetVehicleByRecno(22,145);
// bu şekilde döngüye sokabilirsin
foreach (DataRow row in dt.Rows)
{
var enlem = row["enlem"];
var boylam = row["boylam"];
}
//bu şekilde direk gride bağlayabilirsin
dataGridView1.DataSource = dt;
dataGridView1.AutoGenerateColumns = true;
}
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Hızlı ve detaylı cevabınız için teşekkürler. Kadıköyden pendik tarafına yolunuz düşerse bi çayımı içmeye muhakkak beklerim hocam 

Re: Web servisden çekilen veri ile dataset doldurmak.
İnşallah
Küçükyalıya gelirsen haber ver.

-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Orhan hocam bi sorum daha olacak.
Forma bir clientdataset ve httprio bileşeni koydum. URL olarak webservisin urlsini verdim. Bir adet xmltransformprovider koydum ve webservisten gelen xmli map edip xtr dosyasını read olayından seçtim. clientdataseti gride bağladım datasource ile.
şeklinde çalıştırdığımda xmlden gride kolon başlığı geliyor fakat kayıtlar gelmiyor. Sebebi hakkında bir fikriniz varmı acaba? Bu zamana kadar local çalışıp hiç webservice ve xml ile uğraşmadığım için acemiliğim fazla 
Forma bir clientdataset ve httprio bileşeni koydum. URL olarak webservisin urlsini verdim. Bir adet xmltransformprovider koydum ve webservisten gelen xmli map edip xtr dosyasını read olayından seçtim. clientdataseti gride bağladım datasource ile.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
(HTTPRIO1 as Service1Soap).Table2Dt('MARKA','','','AKS_MARKA');
end;
Kod: Tümünü seç
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
SOAPResponse: TStream);
var
XMLDoc: IXMLDocument;
begin
SOAPResponse.Position := 0;
Memo1.Lines.LoadFromStream(SOAPResponse);
ClientDataset1.Active := FALSE;
SOAPResponse.Position := 0;
XMLDoc := NewXMLDocument;
XMLDoc.Encoding := SUTF8;
SOAPResponse.Position := 0;
XMLDoc.LoadFromStream(SOAPResponse);
XMLTransformProvider1.TransformRead.SourceXmlDocument := XMLDoc.GetDOMDocument;
ClientDataset1.Active := TRUE;
end;

Re: Web servisden çekilen veri ile dataset doldurmak.
Table2Dt metodu ne türde değer döndürüyor? afterExecute ile uğraşmadan dönen değeri kullanabilirsiniz belki?
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Kod: Tümünü seç
public DataTable Table2Dt(string _secilecek,string _siralama,string _filt,string _tblADI)
{
DataTable dt = new DataTable("table1");
string Sorgu = "",_ek1="",_ek2="";
if (_filt.Length > 0) _ek1 = " where "+_filt;
if (_siralama.Length > 0) _ek2 = " order by "+_siralama;
Sorgu = "select " + _secilecek + " from " + _tblADI + " " + _ek1 + " " + _ek2;
using (SqlConnection cnn = new SqlConnection(SqlStr))
{
try
{
SqlDataAdapter da = new SqlDataAdapter(Sorgu, cnn);
da.Fill(dt);
}
catch { }
}
return dt;
}

Re: Web servisden çekilen veri ile dataset doldurmak.
Servisten veri gelmiyor olabilir mi ?
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
Hocam denedik visual studioda kayıt geliyor. Ama bir türlü delphide çekemedim. XML mapper ile de denedim ama Marka alanı boş geliyor.
-
- Üye
- Mesajlar: 32
- Kayıt: 04 Tem 2009 06:20
- Konum: İstanbul
Re: Web servisden çekilen veri ile dataset doldurmak.
XML Mapper ile transform oluştururken alanlar boş geliyor şimdi de.

Sorunun tamamen bende olduğunu kabul ediyorum ama nerde hata yaptığımı bir türlü anlamadım.

Sorunun tamamen bende olduğunu kabul ediyorum ama nerde hata yaptığımı bir türlü anlamadım.

Re: Web servisden çekilen veri ile dataset doldurmak.
Şu projeyi zipleyip bana mail atabilirmisin. Bir de ben bakayım.. tabii sakıncası yoksa.