Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
XML Dosyayı Grid veya StrinGrid'e Aktarma
#11
Suradaki fonksiyon yol gosterecektir. base.xml icindeki diptoplam kismi bulunarak olmasi gereken degeler ataniyor, siz atamak yerine okuyacaksiniz (esitligin solunu kullanacaksiniz).
https://github.com/isisedonusum/SampleXE...Tr.pas#L89
Cevapla
#12
(31-03-2022, Saat: 09:47)MuhammedYasir Adlı Kullanıcıdan Alıntı: Arkadaşlar, 
ekteki XML dosyasının içeriğini grid veya stringgride yazdırmak istiyorum, XMLDocument ile yapamadım, yardımcı olabilir misiniz?

Merhaba muhammed kardeşim bende senin gibi aynı konudan muzdaribim kullanmış olduğum muhasebe programına entegre fatura.xml okuma programı yapacaktım nedeni ise bazen öyle faturalar geliyor ki 100 kalem 150 kalem bazen daha fazla ürün satırı oluyor bunu da tek tek girmek çok zaman alıyor ve zahmetli oluyordu ancak işlerim dolayısıyla programa devam edemedim. Araştırmalarım sonucunda şöyle bir örnek program buldum tam bizim isteğimize göre ancak bazı düzenlemeler gerekiyor eğer ki düzenleme yapıp sonuç başarılı olursa projenin son halini de benimle paylaşırsan çok memnun olurum inşallah işine yarar.


Ek Dosyalar
.zip   Delphi-ile-E-Fatura-Okuma-Ve-Yazma-master.zip (Dosya Boyutu: 390,61 KB / İndirme Sayısı: 34)
Cevapla
#13
(18-04-2022, Saat: 00:00)bünyamin68 Adlı Kullanıcıdan Alıntı:
(31-03-2022, Saat: 09:47)MuhammedYasir Adlı Kullanıcıdan Alıntı: Arkadaşlar, 
ekteki XML dosyasının içeriğini grid veya stringgride yazdırmak istiyorum, XMLDocument ile yapamadım, yardımcı olabilir misiniz?

Merhaba muhammed kardeşim bende senin gibi aynı konudan muzdaribim kullanmış olduğum muhasebe programına entegre fatura.xml okuma programı yapacaktım nedeni ise bazen öyle faturalar geliyor ki 100 kalem 150 kalem bazen daha fazla ürün satırı oluyor bunu da tek tek girmek çok zaman alıyor ve zahmetli oluyordu ancak işlerim dolayısıyla programa devam edemedim. Araştırmalarım sonucunda şöyle bir örnek program buldum tam bizim isteğimize göre ancak bazı düzenlemeler gerekiyor eğer ki düzenleme yapıp sonuç başarılı olursa projenin son halini de benimle paylaşırsan çok memnun olurum inşallah işine yarar.

Bir şeyler yaptım, paylaşıyorum.
procedure TFeFaturaList.BtnXMLOkuClick(Sender: TObject);
Var
 Dosya: IXMLDocument;
 AnaNode: IXMLNode;
 ETTN: String;
 Cevap: DocumentContent2;
 DosyaYaz: TFileStream;
begin
 DMeFatura.HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName :=
   DMeFatura.eFaturaIBQKULLANICI.AsString;
 DMeFatura.HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password :=
   DMeFatura.eFaturaIBQSIFRE.AsString;
 Servis := GetIHizliService(false, DMeFatura.eFaturaIBQSERVIS.AsString,
   DMeFatura.HTTPRIO1);

 ETTN := GonderilenVeriTablosuUUID.AsString;

 if CbxGidenFaturaTuru.Text = 'e-Fatura Giden' then
   SecilenFaturaTuru := 2;
 if CbxGidenFaturaTuru.Text = 'e-Arşiv Giden' then
   SecilenFaturaTuru := 3;
 if CbxGidenFaturaTuru.Text = 'e-İrsaliye Giden' then
   SecilenFaturaTuru := 5;
 if CbxGidenFaturaTuru.Text = 'e-SMM Giden' then
   SecilenFaturaTuru := 6;
 if CbxGidenFaturaTuru.Text = 'e-Müstahsil Giden' then
   SecilenFaturaTuru := 7;

 Cevap := Servis.GetDocumentFile(SecilenFaturaTuru, ETTN, 'XML', false);
 if Cevap.IsSucceeded then
 begin
   DosyaYaz := TFileStream.Create(DMSabit.FirmaIBQEFATURAYER.AsString + '\' +
     ETTN + '.' + 'XML', fmCreate);
   DosyaYaz.Write(Cevap.DocumentFile, length(Cevap.DocumentFile));
   DosyaYaz.Free;

   ShellExecute(Handle, 'open', PWideChar(DMSabit.FirmaIBQEFATURAYER.AsString +
     '\' + ETTN + '.' + 'XML'), nil, nil, SW_SHOWNORMAL);
 end
 else
 begin
   ShowMessage('Başarısız');
 end;

 Memo2.Lines.Clear;
 sutun := -1;
 satir := 1;
 StGridGelenDetay.cells[0, 0] := 'Sıra';
 Dosya := LoadXMLDocument(PWideChar(DMSabit.FirmaIBQEFATURAYER.AsString + '\' +
   ETTN + '.' + 'XML'));
 Dosya.Active := True;
 AnaNode := Dosya.DocumentElement.ChildNodes.First;
 repeat
   if Assigned(AnaNode) Then
   Begin

     if (AnaNode.IsTextElement = True) Then
     Begin
       Memo2.Lines.Add(AnaNode.LocalName + ' -> ' + AnaNode.Text);
       sutun := sutun + 1;
       StrGridGidenMaster.cells[sutun, 0] := AnaNode.LocalName;
       StrGridGidenMaster.cells[sutun, 1] := AnaNode.Text;
     End
     else
     Begin
       if (AnaNode.NodeName <> 'ext:UBLExtensions') and
         (AnaNode.NodeName <> 'cacTongueartyIdentification') and
         (AnaNode.NodeName <> 'cac:AdditionalDocumentReference') Then
       Begin
         if (AnaNode.NodeName = 'cac:InvoiceLine') Then
         Begin
           Memo2.Lines.Add('*' + AnaNode.NodeName + '---------------');
           sutun2 := sutun2 + 1;
           NodeGidenOkumaDetay(AnaNode);
         End
         else if (AnaNode.NodeName = 'cac:Signature') Then
         Begin
           Memo2.Lines.Add('*' + AnaNode.NodeName);
           sutun := sutun + 1;
           NodeGidenOkumaMaster(AnaNode);
         End;
       End;
     End;
   End;

   AnaNode := AnaNode.NextSibling;
 until AnaNode = Nil;
end;

procedure TFeFaturaList.NodeOkumaMaster(A: IXMLNode);
VAR
 ANode: IXMLNode;
Begin
 ANode := A.ChildNodes.First;
 repeat
   if Assigned(ANode) then
   begin
     if (ANode.NodeName <> 'cacTongueartyIdentification') then
       if (ANode.IsTextElement = True) Then
       Begin
         Memo2.Lines.Add(ANode.LocalName + ' -> ' + ANode.Text);
         StGridGelenMaster.cells[sutun, 0] := ANode.LocalName;
         StGridGelenMaster.cells[sutun, 1] := ANode.Text;
         sutun := sutun + 1;
         TableMaster.AddField((ANode.ParentNode.NodeName + '-' +
           ANode.LocalName), ftstring, 100);
       End
       Else
       Begin
         Memo2.Lines.Add(ANode.LocalName);
         NodeOkumaMaster(ANode);
       End;
     ANode := ANode.NextSibling;
   end;

 unt


procedure TFeFaturaList.NodeOkumaMaster(A: IXMLNode);
VAR
 ANode: IXMLNode;
Begin
 ANode := A.ChildNodes.First;
 repeat
   if Assigned(ANode) then
   begin
     if (ANode.NodeName <> 'cacTongueartyIdentification') then
       if (ANode.IsTextElement = True) Then
       Begin
         Memo2.Lines.Add(ANode.LocalName + ' -> ' + ANode.Text);
         StGridGelenMaster.cells[sutun, 0] := ANode.LocalName;
         StGridGelenMaster.cells[sutun, 1] := ANode.Text;
         sutun := sutun + 1;
       End
       Else
       Begin
         Memo2.Lines.Add(ANode.LocalName);
         NodeOkumaMaster(ANode);
       End;
     ANode := ANode.NextSibling;
   end;

 until ANode = Nil;
End;
Cevapla
#14
Ben 2 sene önce izibiz üzerinden e-fatura ve e-arşiv fatura entegrasyonu yaptım. Ancak ben kendi fatura programım üzerinden XML oluşturup sadece gönderim işlemi yaptım. Gelen faturaları parse edip ekranda göstermedim. Sizin yapacağınız şey (bence) XML dosyasını kendi yapacağınız bir yazılımla analiz edip kendi ekran dizaynınızda göstermek. Bunu yapmanın başka ve kolay yolu olduğunu sanmıyorum.
Cevapla
#15
(25-04-2022, Saat: 11:57)enigma Adlı Kullanıcıdan Alıntı: Ben 2 sene önce izibiz üzerinden e-fatura ve e-arşiv fatura entegrasyonu yaptım. Ancak ben kendi fatura programım üzerinden XML oluşturup sadece gönderim işlemi yaptım. Gelen faturaları parse edip ekranda göstermedim. Sizin yapacağınız şey (bence) XML dosyasını kendi yapacağınız bir yazılımla analiz edip kendi ekran dizaynınızda göstermek. Bunu yapmanın başka ve kolay yolu olduğunu sanmıyorum.

Bahsettiğiniz konuda bizimle paylaşabileceğiniz örneğiniz veya konuyu öğrenebileceğimiz bir link var ise paylaşabilir misiniz?
Cevapla
#16
Gelen XML dosyasını nereye indirmişseniz oradan text olarak satır satır satır okuyacaksınız. Her satırı okuduktan sonra o satırı kontrol edip içinde hangi komut var bakıp ona göre o veriyii alıp kullanacaksınız. Çok zor bir şey değil ama oldukça uğraştırıcı diyebilirim. Dediğim gibi ben bunun tam tersini yaptım. Yani ekrandaki veriye göre XML'i aynı mantıkla ben oluşturdum ve gönderim yaptım. Elimde bunun için hazır bir kod yok.
Cevapla
#17
Hızlı Teknolojinin servisini kullanarak yaptığım projenin kodlarını şuracığa bırakıyorum, istifade eden olur düşüncesiyle.
Cevapla
#18
(03-05-2022, Saat: 22:35)MuhammedYasir Adlı Kullanıcıdan Alıntı: Hızlı Teknolojinin servisini kullanarak yaptığım projenin kodlarını şuracığa bırakıyorum, istifade eden olur düşüncesiyle.

Ozel entegratore ozgu vergi yapilarini kullanmazini tavsiye etmem, Bu tur veri yapilari hem sizi kisitlar hem de o ozel entegratore bagimli hale getirir. Standart UBL-TR kullanmaya calisin.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Html veya Xml pdf e çevirme ahmet6513 6 234 09-11-2022, Saat: 10:38
Son Yorum: ahmet6513
  DBGrid1'deki Verileri Tabloya Aktarma OZCANK 11 3.187 28-09-2022, Saat: 15:49
Son Yorum: OZCANK
  Stringgrid seçili sütunları aktarma cvheneburi 0 112 23-09-2022, Saat: 00:03
Son Yorum: cvheneburi
  Delphi ile güvenlik kamerasından veya resimden cisimleri sayma koysuren 3 584 30-07-2022, Saat: 16:39
Son Yorum: Jakarta2
  Excel Veri Aktarma Hatası MosCom 5 517 22-06-2022, Saat: 09:10
Son Yorum: MosCom



Konuyu Okuyanlar: 1 Ziyaretçi