Hallo,
da es kein spezialisierteres Board für das HBCI Thema gibt, hoffe ich, dass hier auch ein paar Fragen bezüglich Programmierung gestellt werden können.
Ich habe die .NET Komponente von DataDesign und die funktioniert auch gleich vom ersten Start an ganz gut. Jedoch habe ich mir mal über mehrere Wochen den Kontoauszug von meiner Bank runtergeladen und genau bei der 90-sten Buchung stoppt die DDBAC. Momentan könnte ich also pro Aholung maximal diese 90 Buchungen bekommen.
Im Beispiel-Code von DataDesign wird ein string sCursor = "" deklariert und später wieder beim "Aufsetzpunkt1" diesem zugeweisen, wenn er nicht leer ist. Wärend der Verarbeitung wird er allerdings nicht angerührt, hierbei sehe ich das Problem, weiß aber leider nicht, wie ich aus DDBAC.ReportResult (oMessage); den Aufsetzpunkt extrahieren kann.
Anbei mal der Codeabschnitt, indem das Problem liegt.
Für jeglichen Tip wäre ich dankbar!
Und PS: hat eigentlich jede Buchung einen unique Key? Ich vergleiche momentan immer die Inhalte der Buchung, damit ich nichts doppelt importiere, wenn die Bank einen Key bereitstellen würde, wäre es einfacher und sicherer! Einen Key fand ich in der Struktur jedoch nicht.
Vielen Dank im Voraus.
Bernhard
string sCursor = "";
while(true)
{
// Das Auftragssegment wird übermittelt und die Rückmeldungen werden
// überprüft. Eventuelle Warnungen oder Fehler werden angezeigt.
//SupplyTAN
oMessage = DDBAC.Dialog.ExecuteSegment(oHKKAZ);
DDBAC.ReportResult (oMessage);
// Die Antwortdaten werden zur Ausgabe hinzugefügt.
BACTransaction oTxn;
IBACSegment oHIKAZ;
BACDataObject oBlob;
oTxn = oMessage.Transactions[0];
if (oTxn.ResponseSegments.Count == 1)
{
oHIKAZ = oTxn.ResponseSegments[0];
oBlob = oHIKAZ["UmsaetzeGebucht1",1] as BACDataObject;
if (oBlob != null)
{
fHaveSomething = true;
// Die empfangenen Daten werden jetzt an das als Sammelbecken
// agierende Datenobjekt angehängt.
oDataObject.PutString(oDataObject.GetString() + oBlob.GetString());
}
}
// Falls kein Aufsetzpunkt gemeldet wurde, sind wir jetzt fertig.
// Ansonsten wird die Auftragsnachricht mit einem Aufsetzpunkt
// wiederholt.
if (sCursor == null || sCursor.Length == 0)
break;
else
oHKKAZ["Aufsetzpunkt1",1 ] = sCursor;
}
da es kein spezialisierteres Board für das HBCI Thema gibt, hoffe ich, dass hier auch ein paar Fragen bezüglich Programmierung gestellt werden können.
Ich habe die .NET Komponente von DataDesign und die funktioniert auch gleich vom ersten Start an ganz gut. Jedoch habe ich mir mal über mehrere Wochen den Kontoauszug von meiner Bank runtergeladen und genau bei der 90-sten Buchung stoppt die DDBAC. Momentan könnte ich also pro Aholung maximal diese 90 Buchungen bekommen.
Im Beispiel-Code von DataDesign wird ein string sCursor = "" deklariert und später wieder beim "Aufsetzpunkt1" diesem zugeweisen, wenn er nicht leer ist. Wärend der Verarbeitung wird er allerdings nicht angerührt, hierbei sehe ich das Problem, weiß aber leider nicht, wie ich aus DDBAC.ReportResult (oMessage); den Aufsetzpunkt extrahieren kann.
Anbei mal der Codeabschnitt, indem das Problem liegt.
Für jeglichen Tip wäre ich dankbar!
Und PS: hat eigentlich jede Buchung einen unique Key? Ich vergleiche momentan immer die Inhalte der Buchung, damit ich nichts doppelt importiere, wenn die Bank einen Key bereitstellen würde, wäre es einfacher und sicherer! Einen Key fand ich in der Struktur jedoch nicht.
Vielen Dank im Voraus.
Bernhard
Code
string sCursor = "";
while(true)
{
// Das Auftragssegment wird übermittelt und die Rückmeldungen werden
// überprüft. Eventuelle Warnungen oder Fehler werden angezeigt.
//SupplyTAN
oMessage = DDBAC.Dialog.ExecuteSegment(oHKKAZ);
DDBAC.ReportResult (oMessage);
// Die Antwortdaten werden zur Ausgabe hinzugefügt.
BACTransaction oTxn;
IBACSegment oHIKAZ;
BACDataObject oBlob;
oTxn = oMessage.Transactions[0];
if (oTxn.ResponseSegments.Count == 1)
{
oHIKAZ = oTxn.ResponseSegments[0];
oBlob = oHIKAZ["UmsaetzeGebucht1",1] as BACDataObject;
if (oBlob != null)
{
fHaveSomething = true;
// Die empfangenen Daten werden jetzt an das als Sammelbecken
// agierende Datenobjekt angehängt.
oDataObject.PutString(oDataObject.GetString() + oBlob.GetString());
}
}
// Falls kein Aufsetzpunkt gemeldet wurde, sind wir jetzt fertig.
// Ansonsten wird die Auftragsnachricht mit einem Aufsetzpunkt
// wiederholt.
if (sCursor == null || sCursor.Length == 0)
break;
else
oHKKAZ["Aufsetzpunkt1",1 ] = sCursor;
}