GBGRİDE Aktarma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Değerli Üstadlar,

Yapmış olduğum proje ek'tedir.
Amacım TCMB kurlarını istenilen tarihleri xml olarak çekmek ve veritabanına kayıt etmektir.(Her Tarih Veritabaında da olacak).Xml dosyasından Tarih Alanını da alamadım.
Verileri StringGride çekebiliyorum fakat GBGird içine alamadım. Doğrudan da çekmek istedim fakat başarılı olamadım.
Yardımcı olabilirseniz memnun olurum.

Delphi 2007 kullanıyorum yeni başladım.
Dosya ekleri
kurlar son çalışmam.rar
(39.36 KiB) 67 kere indirildi
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Yardımcı olabilecek yok mu ?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: GBGRİDE Aktarma

Mesaj gönderen SimaWB »

freeman35 yazdı:Adam gibi, anlaşılır, detaylı şekilde sorunuzu yazın, bilen yada "CANI CEVAP VERMEK İSTEYEN, CANI İSTERSE CAVAP YAZAR" bir gün sonra cevap veren yok mu? bilen yok mu? diye mesaj yazmak ne?
Ayrıntıları buradan okuyabilirsiniz!
There's no place like 127.0.0.1
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: GBGRİDE Aktarma

Mesaj gönderen xxxjedixxx »

Access kullanmadığım için bazı hatalar olabilir. Aşağıdaki kod, tabloda kayıt yoksa yeni kayıt girer eğer varsa mevcut olan kaydı günceller.

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject);
var iNode : IXMLNode;
    TmpQuery: TADOQuery;
    KayitNo: Integer;
begin
  XMLDocument1.Active := False;
  XMLDocument1.FileName := Label4.Caption;
  try
    XMLDocument1.Active := True;
    iNode := XMLDocument1.DocumentElement.ChildNodes.First;
    if iNode = nil then Exit;
  except
    Exit;
  end;
  TmpQuery := TADOQuery.Create(Self);
  TmpQuery.Connection := ADOConnection1;
  with TmpQuery, iNode.ChildNodes do
  begin
    while iNode <> nil do
    begin
      SQL.Text := 'select kur_ref from kurlar where tarih=:ptarih and kod=:pkod';
      Parameters.ParamByName('ptarih').Value := XMLDocument1.DocumentElement.Attributes['Tarih'];
      Parameters.ParamByName('pkod').Value := iNode.Attributes['Kod'];
      Active := True;
      if IsEmpty then
      begin
        SQL.Text := 'insert into kurlar (kod, doviz_aciklamasi, birim, alis, satis, efektifalis, efektifsatis, tarih) ' +
                             'values (:pkod, :paciklama, :pbirim, :palis, :psatis, :pealis, :pesatis, :ptarih)';
        Parameters.ParamByName('ptarih').Value := XMLDocument1.DocumentElement.Attributes['Tarih'];
      end else
      begin
        KayitNo := FieldByName('kur_ref').AsInteger;
        SQL.Text := 'update kurlar set kod=:pkod, doviz_aciklamasi=:paciklama, birim=:pbirim, alis=:palis, ' +
                             'satis=:psatis, efektifalis=:pealis, efektifsatis=:pesatis where kur_ref=:precno';
        Parameters.ParamByName('precno').Value := KayitNo;
      end;
      Parameters.ParamByName('pkod').Value := iNode.Attributes['Kod'];
      Parameters.ParamByName('paciklama').Value := Nodes['Isim'].Text;
      Parameters.ParamByName('pbirim').Value := Nodes['Unit'].Text;
      Parameters.ParamByName('palis').Value := 0;
      Parameters.ParamByName('psatis').Value := 0;
      Parameters.ParamByName('pealis').Value := 0;
      Parameters.ParamByName('pesatis').Value := 0;
      if Nodes['ForexBuying'].Text <> '' then
        Parameters.ParamByName('palis').Value := StringReplace(Nodes['ForexBuying'].Text, '.', ',', [rfReplaceAll]);
      if Nodes['ForexSelling'].Text <> '' then
        Parameters.ParamByName('psatis').Value := StringReplace(Nodes['ForexSelling'].Text, '.', ',', [rfReplaceAll]);;
      if Nodes['BanknoteBuying'].Text <> '' then
        Parameters.ParamByName('pealis').Value := StringReplace(Nodes['BanknoteBuying'].Text, '.', ',', [rfReplaceAll]);;
      if Nodes['BanknoteSelling'].Text <> '' then
        Parameters.ParamByName('pesatis').Value := StringReplace(Nodes['BanknoteSelling'].Text, '.', ',', [rfReplaceAll]);;
      ExecSQL;
      iNode := iNode.NextSibling;
    end;
  end;
  TmpQuery.Free;
end;
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Sayın SimaWB ,

Mesajı lütfen dikkatli okuyun!

Kimsenin bizlere cevap vermek mecburiyeti olmadığını BİLİYORUM.

Ama Delphi'yi yeni öğrenmeye çalışan biri olarak (bilen yok mu?) küstahlığını asla yapmam.

Sorunum da daha açık yazmaya gayret gösterdiğime inanıyorum. Anlatamadığın veya ifade edemediğim yer olursa cevap yazarsanız bende daha anlaşılır duruma getirmeye çalışırım.

Saygılarımla
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Cevabınız için çok teşekkür ederim. Kodlar gayet güzel çalışmaktadır.

Hakkınızı helal ediniz.

Saygılarımla.
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx

Kodlarınız çalışıyor fakat ben atlamış, döviz açıklamalarını sadece ilk başta olan kayıtları getirmektedir. Döviz Kodlarında sıkıntı çok.

Saygılarımla
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: GBGRİDE Aktarma

Mesaj gönderen xxxjedixxx »

Kusura bakma, kodlamada "with" terimi kullanarak kısaltma yapayım derken çok kritik bir hata yapmışım. Ayrıca sen sorun yok demişsin ama kontrol ettiğimde kurların da yanlış olduğunu hepsine aynı rakamları yazdığını fark ettim. Düzeltiyorum.

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject);
var iNode : IXMLNode;
    TmpQuery: TADOQuery;
    KayitNo: Integer;
begin
  XMLDocument1.Active := False;
  XMLDocument1.FileName := Label4.Caption;
  try
    XMLDocument1.Active := True;
    iNode := XMLDocument1.DocumentElement.ChildNodes.First;
    if iNode = nil then Exit;
  except
    Exit;
  end;
  TmpQuery := TADOQuery.Create(Self);
  TmpQuery.Connection := ADOConnection1;
  with TmpQuery do
  begin
    while iNode <> nil do
    with iNode.ChildNodes do
    begin
      SQL.Text := 'select kur_ref from kurlar where tarih=:ptarih and kod=:pkod';
      Parameters.ParamByName('ptarih').Value := XMLDocument1.DocumentElement.Attributes['Tarih'];
      Parameters.ParamByName('pkod').Value := iNode.Attributes['Kod'];
      Active := True;
      if IsEmpty then
      begin
        SQL.Text := 'insert into kurlar (kod, doviz_aciklamasi, birim, alis, satis, efektifalis, efektifsatis, tarih) ' +
                             'values (:pkod, :paciklama, :pbirim, :palis, :psatis, :pealis, :pesatis, :ptarih)';
        Parameters.ParamByName('ptarih').Value := XMLDocument1.DocumentElement.Attributes['Tarih'];
      end else
      begin
        KayitNo := FieldByName('kur_ref').AsInteger;
        SQL.Text := 'update kurlar set kod=:pkod, doviz_aciklamasi=:paciklama, birim=:pbirim, alis=:palis, ' +
                             'satis=:psatis, efektifalis=:pealis, efektifsatis=:pesatis where kur_ref=:precno';
        Parameters.ParamByName('precno').Value := KayitNo;
      end;
      Parameters.ParamByName('pkod').Value := iNode.Attributes['Kod'];
      Parameters.ParamByName('paciklama').Value := Nodes['Isim'].Text;
      Parameters.ParamByName('pbirim').Value := 1;
      Parameters.ParamByName('palis').Value := 0;
      Parameters.ParamByName('psatis').Value := 0;
      Parameters.ParamByName('pealis').Value := 0;
      Parameters.ParamByName('pesatis').Value := 0;
      if Trim(Nodes['Unit'].Text) <> '' then
        Parameters.ParamByName('pbirim').Value := StringReplace(Nodes['Unit'].Text, '.', ',', [rfReplaceAll]);
      if Trim(Nodes['ForexBuying'].Text) <> '' then
        Parameters.ParamByName('palis').Value := StringReplace(Nodes['ForexBuying'].Text, '.', ',', [rfReplaceAll]);
      if Trim(Nodes['ForexSelling'].Text) <> '' then
        Parameters.ParamByName('psatis').Value := StringReplace(Nodes['ForexSelling'].Text, '.', ',', [rfReplaceAll]);;
      if Trim(Nodes['BanknoteBuying'].Text) <> '' then
        Parameters.ParamByName('pealis').Value := StringReplace(Nodes['BanknoteBuying'].Text, '.', ',', [rfReplaceAll]);;
      if Trim(Nodes['BanknoteSelling'].Text) <> '' then
        Parameters.ParamByName('pesatis').Value := StringReplace(Nodes['BanknoteSelling'].Text, '.', ',', [rfReplaceAll]);;
      ExecSQL;
      iNode := iNode.NextSibling;
    end;
  end;
  TmpQuery.Free;
end;
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Eline sağlık çok teşekkür ederim. Tarih dikkatini çekti mi bilmiyorum ama hep 21.05.2014 tarihini atamaktadır.

saygılarımla
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: GBGRİDE Aktarma

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Pardon, Merkez bankası güncellemeyi unutmuş olmalı xml kayıtlarında bugün tarihi 21.05.2014 tarihi görünmektedir.

saygılarımla
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: GBGRİDE Aktarma

Mesaj gönderen xxxjedixxx »

Bildiğim kadarıyla saat 16:00 ile 16:30 arası güncelleniyor.
Cevapla