CCADOConnection adoConnection = new CCADOConnection();adoConnection.open("DNS=altDatenKunden");
str SQLstring = "SELECT * From Artikeltabelle";CCADORecordSet adoRecordSet = new CCADORecordSet();adoRecordSet.open(SQLstring, adoConnection);
Über adoRecordSet enthält man nun Zugriff auf alle Datensätze aus der Tabelle "Artikeltabelle". Mittels einer Schleifen kann man nun auf jeden einzelen Datensatz zugreifen.
while (!adoRecordSet.EOF()){adoRecordSet.moveNext();}
Um nun Zugriff auf die Daten zu erhalten brauchen wir noch CCADOFields, bzw. CCADOField
CCADOFields adoFields;CCADOField adoField;adoFields = adoRecordSet.fields();adoField = adoFields.itemName("Artikelnummer");print adoField.value();
Durch diese Anweisungen wird nun das Feld "Artikelnummer" des aktuellen Datensatzes ausgegeben.
Direkte Zuweisungen zum Datenfeld:
adoField = adoFields.itemName("Artikelnummer");
adoField = adoFields.itemIDx(1);
Über die Methode
adoFields.count()
erhält man die gesamte Anzahl der Felder, der aktuellen Tabelle und erhält so Zugriff auf jedes einzelne Tabellenfeld auch ohne deren Benennung und/ oder Anzahl zu kennen..
for( i =1 ; i<= adoFields.count() ; i++){adoField = adoFields.itemIdx(i);print adoField.value();}
Die Methode value() der Klasse CCADOField gibt den Wert des Feldes immer als den richtigen Axapta Basis Wertetyp (str, int, real usw.) zurück. Somit muss man sich über eine Typenwandlung in der Regel keine Gedanken machen.
Zum Abschluss noch ein komplettes Bespiel.
CCADOConnection Connection;str SQL;CCADORecordSet adoRecordSet;;// Neue ADO ConnectionConnection = new CCADOConnection();// Verdingung zur Datenbank öffnenConnection.open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\altDatenKunde.mdb");// Neuer RecordSetadoRecordSet = new CCADORecordSet();// SQL Anweisungsql = strfmt("SELECT * FROM %1","Artikeltabelle");// Datensatzsammlung mit Verbindung zur Datenbank und anhand der SQL AnweisungadoRecordSet.open(sql, connection);// Alle Datensätzewhile (!adoRecordSet.EOF()){// Ausgabe des Erstfeldesprint adoRecordSet.fields().itemIdx(1).value();// Ausgabe des Feldes "Artikelbestand"print adoRecordSEt.fields().itemName("Artikelbestand").value();// Nächster DatensatzadoRecordSet.moveNext();}
adoRecordSet.close(); //Recordset schließenConnection.close(); //Connection schlißen
pause;