und so gehts:
Code: Alles auswählen
FUNCTION BrowseSummen
LOCAL nSavedWorkArea
LOCAL hCursor := 0, hStatement := 0
LOCAL hConnect := DacSession():getDefault():GetConnectionHandle()
LOCAL cSQL
// SQL Statment aufbereiten
TEXT INTO cSQL WRAP Chr(13)+Chr(10) TRIMMED
SELECT Count(*) as Anzahl, Kunde, Sum(Netto)
FROM Rechnungen
WHERE Year(RngDatum) = 2011
GROUP BY Kunde
ENDTEXT
_APICall AdsCreateSQLStatement( hConnect. @hStatement) // Handle für ein SQL Statement anfordern
_APICall AdsStmtSetTableType( hStatement, 2) // Tabellentyp auf DBF-NTX setzen
_APICall AdsExecuteSQLDirect( hStatemente, @cSQL, @hCursor ) // SQL-Statment an ADS übergeben und CursorHandle anfordern
nSavedWorkArea := Select()
dbUseArea( .t., NIL, "<CURSOR>" + L2Bin(hCursor) + "<\CURSOR>" ) // Cursor mit USE Command öffnen
// oder: USE ("<CURSOR>" + L2Bin(hCursor) + "<\CURSOR>") NEW
BROWSE()
dbCloseArea()
dbSelectArea(nSavedWorkArea)
RETURN
In diesem Beispiel werden nur drei zusätzliche API Calls zusätzlich benötigt, die als DLL Aufruf in die ACE32.DLL erfolgen müssen.
Ein vollständiges Xbase++ API für ADS (Version 10.1) kann ich bei Interesse zur Verfügung stellen.