Moin Moin,
ich habe mehrere Fragen zum Thema SQL in AHK und bin bisher nicht so richtig fündig geworden.
1. Frage: muss das rsSql nach jeder Abfrage mit rsSql.Close() geschlossen werden?
2. Frage: kann man es auch nur zurücksetzen und direkt mit einer neuen Abfrage füllen?
3. Frage: was passiert, wenn das Programm "abstürzt" und der Befehl connection.Close() nicht ausgeführt wurde? (weil ich es beim programmieren versemmelt hab)
3.1 Frage: Gibt es eine Möglichkeit die Verbindung immer zu beenden, wenn was schief geht? (falls nötig)
4. Frage: Gibt es eine maximale Anzahl an Zeichen die im Query stehen dürfen? (bei Excel-VBA ist es begrenzt)
Vielen Dank für eure Hilfe
Gruß
Andi
SQL Abfragen und Updates Topic is solved
Moderator: jNizM
-
- Posts: 23
- Joined: 15 Jan 2015, 03:45
Re: SQL Abfragen und Updates
Moin, es würde mir helfen, wenn ich wüsste, wo ich da Skript finde, das Dein rsSql erstellt.
-
- Posts: 23
- Joined: 15 Jan 2015, 03:45
Re: SQL Abfragen und Updates
Hi,
anbei ein Programmausschnitt, um es verständlicher zu machen, wobei es ja allgemeine Verständnisfragen sind.
anbei ein Programmausschnitt, um es verständlicher zu machen, wobei es ja allgemeine Verständnisfragen sind.
Code: Select all
connection := CreateDatabaseConnection()
; Überprüfen, ob die Verbindung erfolgreich hergestellt wurde----------------------------
if (connection.State = 1) {
;MsgBox "Verbunden"
; SQL-Abfrage zum Infos abrufen erstellen-------------------------------------------------
sqlQuery := "Select DIDQTY from YZdb.USER.T_DID WHERE DIDDID = '" . DID . "'"
; ADODB-Recordset erstellen
rsSql := ComObjCreate("ADODB.Recordset")
rsSql.CursorLocation := 3 ; adUseClient
rsSql.Open(sqlQuery, connection, 1) ; adOpenStatic
; Auf die Daten im Recordset zugreifen und Update senden-----------------------------------------------------
if(!rsSql.EOF) {
;MsgBox % "DIDQTY: " . rsSql.Fields("DIDQTY").Value . "`n" . "DIDBAR: " . rsSql.Fields("DIDBAR").Value . "`n" . "DIDDID: " . rsSql.Fields("DIDDID").Value
QTY := % rsSql.Fields("DIDQTY").Value - QTY
sqlQuery := "Update YZdb.USER.T_DID SET DIDQTY = '" . QTY . "'WHERE DIDDID = '" . DID . "'"
connection.Execute(sqlQuery)
}
else
{
MsgBox "DID nicht gefunden"
}
; SQL Beenden erstellen---------------------------------------------------------------------
Verbindung_beenden()
}
else {
MsgBox "Keine Verbindung zum Server. Aktion wird abgebrochen!"
Gui, Destroy
return
}
;-----------------------------------------------------------
; Verbindung und das Recordset schließen
Verbindung_beenden(){
rsSql.Close()
connection.Close()
}
;-------------------------------------------------------
; ADODB-Verbindung erstellen
CreateDatabaseConnection() {
connection := ComObjCreate("ADODB.Connection")
server_name := "XY"
database_name := "YZdb"
connection.ConnectionString := "Provider=SQLNCLI11;Server=" . server_name . ";database=" . database_name . "; User ID=Karl; Password=1234"
connection.ConnectionTimeout := 10
connection.Open()
; Die Verbindung zurückgeben
return connection
}
Re: SQL Abfragen und Updates Topic is solved
Moin,
genau genommen handelt es sich um 'allgemeine' Verständnisfragen zu ADODB.
Zu 1 - 3.1:
Ich denke, dass Du das Connection-Objekt und das Recordset-Object nur einmal erstellen musst. Das Recordset solltest Du mit der Close-Methode schließen, wenn Du damit fertig bist. Du kannst es danach jederzeit mit der Open-Methode neu füllen.
Die erstellten Objekte werden von AHK freigegeben, wenn das Programm nicht 'böse' abstürzt. Ein normales nicht erwartetes Ende zu falschen Zeitpunkt kann mit OnExit abgesichert werden.
genau genommen handelt es sich um 'allgemeine' Verständnisfragen zu ADODB.
Zu 1 - 3.1:
Ich denke, dass Du das Connection-Objekt und das Recordset-Object nur einmal erstellen musst. Das Recordset solltest Du mit der Close-Methode schließen, wenn Du damit fertig bist. Du kannst es danach jederzeit mit der Open-Methode neu füllen.
Die erstellten Objekte werden von AHK freigegeben, wenn das Programm nicht 'böse' abstürzt. Ein normales nicht erwartetes Ende zu falschen Zeitpunkt kann mit OnExit abgesichert werden.
Who is online
Users browsing this forum: No registered users and 13 guests