Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML datei in DBGrid auslesen (https://www.delphipraxis.net/83787-xml-datei-dbgrid-auslesen.html)

eimo 6. Jan 2007 13:29


XML datei in DBGrid auslesen
 
Grüße im neuen Jahr an alle DP-ler!

Ich habe unter .NET eine Anwendung geschrieben, die XML Dateien erzeugt und möchte sie mit WIN32 auslesen.
Dazu habe ich erstmal ein Miniprogramm geschrieben, das bei Aufruf eine vorhandene XML-Datei in einem DBGrid anzeigen soll. Mehr nicht.

Dabei bekomme ich immer eine Fehlermeldung:
XML Parse Error; Reason: The system cannot locate the resource specified.

Hier der Quelltext des OnCreate-Events:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  XMLTransform1.SourceXMLFile := 'Auftrag3.xml';
  XMLTransform1.TransformationFile := 'ToDb.xtr';
// Bis hierhin läuft alles normal, dann kommt die Fehlermeldung
// XML Parse Error; Reason: The system cannot locate the resource specified.
  ClientDataSet1.XMLData := XMLTransform1.Data;
  ClientDataSet1.Active := true;
end;
Ich habe übrigens in dem Programm eine Form mit einem DBGrid1, dem ich im Objektinspektor als DataSource die DataSource1 zugewiesen habe, die DataSource1 hat als DataSet den ClientDataSet1, der ClientDataSet1 hat als ProviderName den XMLTransformProvider und der XMLTransformProvider als XMLDataFile den "Auftrag3.xml". Dazu gibt es ein XMLTransform1, das als TransformationFile die gemappte "FromXML.xtr" besitzt.

Jetzt die Fragen:

Liegt es daran, dass die Datei in .NET geschrieben wurde?
-IMHO "Nein", aber ich lasse mich gerne eines besseren belehren.

Welche Ressource kann nicht gefunden werden?
Und wichtiger:
Wie bekomme ich das Problem in den Griff?

Vielen Dank für Eure Mühen,
es grüßt der eimo

Bernhard Geyer 6. Jan 2007 14:05

Re: XML datei in DBGrid auslesen
 
Gib mal die Dateien mit kompletter Pfadangabe an. Falls das nicht hilft vertausche die Reihenfolge.

marabu 6. Jan 2007 14:11

Re: XML datei in DBGrid auslesen
 
Hallo eimo,

vielleicht wird die Datei wirklich nicht gefunden:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  dir, fnXML, dnXSLT: String;
begin
  GetDir(0, dir);
  dir := IncludeTrailingPathDelimiter(dir);
  fnXML := 'Auftrag3.xml';
  fnXSLT := 'ToDb.xtr';
  if not FileExists(dir + fnXML) then
    ShowMessage(Format('Datei "%s%s" nicht gefunden', [dir, fnXML])) else
  if not FileExists(dir + fnXSLT) then
    ShowMessage(Format('Datei "%s%s" nicht gefunden', [dir, fnXSLT])) else
  begin
    XMLTransform1.SourceXMLFile := fnXML;
    XMLTransform1.TransformationFile := fnXSLT;
    ClientDataSet1.XMLData := XMLTransform1.Data;
    ClientDataSet1.Active := True;
  end;
end;
Neujahrsgrüße vom marabu

eimo 6. Jan 2007 14:16

Re: XML datei in DBGrid auslesen
 
Glaube nicht, dass es daran liegt könnte, denn die liegen im gleichen Ordner.

Hab aber in der Zwischenzeit das XML-File neu gemappt und den neuen Mapper unter einem anderen Namen abgespeichert, alle Bezüge geändert und jetzt klappt's. Weiß nicht, was beim ersten mappen anders gelaufen ist.http://www.delphipraxis.net/posting.php?mode=iframe Embarassed

Danke.

eimo 11. Jan 2007 16:27

Re: XML datei in DBGrid auslesen
 
Seltsam,

mein DBGrid nimmt liest das XML Dokument ein, stellt aber nur die erste Zeile dar. Im Browser sieht man alle Auftragspositionen, im Grid nur die erste.

XML-Code:
<Auftrag>
  <KNr></KNr>
  <ANr></ANr>
  <content>
    <APosNr></APosNr>
    <AufgNr></AufgNr>
    <Vorgänger />
    <Dauer></Dauer>
    <FAZ></FAZ>
    <SEZ></SEZ>
  </content>
</Auftrag>
Dachte zuerst, es liegt daran, dass ich die Positionen an die Auftragsnummer gehängt habe. Schließlich sind Kundennummer und Auftragsnummer ja Kopfdaten, und die wollte ich pro Auftrag nur einmal eingeben, aber jedesmal anzeigen lassen. Meine Überlegung dazu war, dass der Grid die nächste Zeile nicht einliest, da die KNr und ANr nicht nochmal erwähnt sind.
Habe darauf die KNr und ANr jedesmal mit angegeben und so die Struktur umgeändert in

XML-Code:
<Auftrag>
  <KNr></KNr>
  <ANr></ANr>
  <APosNr></APosNr>
  <AufgNr></AufgNr>
  <Vorgänger />
  <Dauer></Dauer>
  <FAZ></FAZ>
  <SEZ></SEZ>
</Auftrag>
aber der Fehler bleibt der gleiche, der Grid stellt nur die erste Datenzeile dar.

Hat jemand 'ne Idee, woran das liegen könnte?

MfG vom eimo


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz