Aus deinem Skript ist nicht ersichtlich, wie du SQL-Execute vollziehst. (FireBird.au3 ist eine UDF, solltest du drauf verlinken, wenn du diese verwendest. Mir ist sie nicht bekannt.)
Hier mal die Funktionen, die ich mir für die Interaktion mit Firebird erstellt habe:
Spoiler anzeigen
;===============================================================================
; Function Name: _oSQLDB_Connect($connStr)
; Description:: erstellt eine Objektreferenz auf eine Firebird-DB
; Parameter(s): $connStr Connection-String enthält die Verbindungsparameter
; Requirement(s): Firebird und installierte FB-ODBC-Treiber
; Return Value(s): Erfolg Referenz des ADODB-Objektes
; Fehler 1, @error 1
; Author(s): BugFix
;===============================================================================
Func _oSQLDB_Connect($connStr)
Local $objConnection = ObjCreate("ADODB.Connection")
If Not IsObj($objConnection) Then Return SetError(1,0,1)
$objConnection.Open($connStr)
Return $objConnection
EndFunc ;==>_oSQLDB_Connect
;===============================================================================
; Function Name: _oSQLDB_Execute($oConn, $strCommand, $Options=-1)
; Description:: führt Kommandostring (SQL-Sequenz) aus
; Parameter(s): $oConn Referenz des FB-Objektes
; $strCommand Kommandostring
; optional $Options CommandTypeEnum (http://msdn.microsoft.com/en-us/library/ms675946(VS.85).aspx) oder
; ExecuteOptionEnum (http://msdn.microsoft.com/en-us/library/ms676517(VS.85).aspx)
; Return Value(s): Eine Recordset Objekt-Referenz, ein Stream oder Nichts
; Author(s): BugFix
;===============================================================================
Func _oSQLDB_Execute($oConn, $strCommand, $Options=-1)
Local $recAffected
Return $oConn.Execute($strCommand, $recAffected, $Options)
EndFunc ;==>_oSQLDB_Execute
;===============================================================================
; Function Name: _oRecSet_Close($oRecSet)
; Description:: Beendet ein RecordsetObjekt
; Parameter(s): $oRecSet Referenz des Objektes
; Author(s): BugFix
;===============================================================================
Func _oRecSet_Close($oRecSet)
$oRecSet.Close
EndFunc ;==>_oRecSet_Close
;===============================================================================
; Function Name: _oSQLDB_Close($oConn)
; Description:: Beendet eine Firebird-Verbindung
; Parameter(s): $oConn Referenz des FB-Objektes
; Author(s): BugFix
;===============================================================================
Func _oSQLDB_Close($oConn)
$oConn.Close
EndFunc ;==>_oSQLDB_Close
Und hier mal ein Beispiel:
Global $data_source = "Lw:/PFAD/DEINER/FB-DB" ; Notation mit "/" beachten!!
Global $strConnection = "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=" & $data_source & ";"
Global $oFB, $oRS, $sql_str, $arTables, $arFieldType
[/autoit][autoit][/autoit][autoit]$oFB = _oSQLDB_Connect($strConnection)
If Not IsObj($oFB) Then
MsgBox(0, 'Datenbank', 'keine Verbindung')
_close()
EndIf
; #### alle UserTabellen auslesen ####
$sql_str = "SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 ORDER BY RDB$RELATION_NAME;"
$oRS = _oSQLDB_Execute($oFB, $sql_str)
$arTables = $oRS.GetRows
_ArrayDisplay($arTables)
; #### alle UserTabellen mit Feldnamen und FeldTypen ####
$sql_str = "SELECT RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME NOT CONTAINING '$' order by RDB$RELATION_NAME, RDB$FIELD_NAME;" ;[0]=Feld, [1]=Tabelle, [2]=Typ-Länge
$oRS = _oSQLDB_Execute($oFB, $sql_str)
$arFieldType = $oRS.GetRows ; Tabelle-Feld-Datentyp
_ArrayDisplay($arFieldType)
_close()
[/autoit][autoit][/autoit][autoit]Func _close()
If IsObj($oRS) Then _oRecSet_Close($oRS)
If IsObj($oFB) Then _oSQLDB_Close($oFB)
Exit
EndFunc