HExecuteSQLQuery und HModify
Hi,
ich habe jetzt schon ein bisschen mehr mit WinDev gearbeitet und bin ganz zufrieden damit.
Allerdings ist bei mir ein seltsamer Fehler aufgetaucht.
Ich erstelle einen SQL String, mit dem ich dann per HExecuteSQLQuery(…) eine Abfrage durchführe, das Ergebnis weise ich einer globalen Variablen zu, welche ich wiederum als Quelle (..BrowsedItem) für ein Table Control nutze.
Wenn ich jetzt per HModify einen Datensatz der Tabelle ändere und daraufhin wieder den zuvor aufgeführten Vorgang (HExecute… + ..BrowsedFile) wiederhole, läuft beim nächsten Versuch HModify auf einen Fehler auf.
Das Phänomen zeigt sich nur wenn ich die Aktionen auf derselben Tabelle ausführe.
Es ist auch kein Problem zwischen den beiden HExec... –Befehlen mehrere HModify Befehle auszuführen, nur eben nach dem zweiten Ausführen einer Abfrage auf der Tabelle führt ein HModify Befehl zu einem Fehler, wenn ich zwischen den HExec… Befehlen mindestens einen HModify Befehl ausgeführt habe.
Gibt es einen Befehl dem man vor einem HModify ausführen muss, abgesehen von der Platzierung auf dem richtigen Datensatz? Vielleicht irgendwas damit wieder die Tabelle richtig eingelesen wird oder so?
Oder liegt das Problem an einer anderen Stelle?
MfG Gerhard
HExecuteSQLQuery und HModify
-
- Junior Member
- Beiträge: 24
- Registriert: 24. März 2011, 21:13
Re: HExecuteSQLQuery und HModify
Hallo Gerhard,
kannst Du mal etwas Code posten?
Was sagt die Fehlermeldung?
kannst Du mal etwas Code posten?
Was sagt die Fehlermeldung?
Re: HExecuteSQLQuery und HModify
Ja , sicher.
HExecuteSQL:
HModify:
Fehlermeldung:
MfG Gerhard
HExecuteSQL:
Code: Alles auswählen
PROCEDURE show_UAnträge(sSQLString is string)
// Anträge anzeigen
HExecuteSQLQuery(gdsQRY_UAntraege,sSQLString)
TABLE_UAnträge..BrowsedFile = gdsQRY_UAntraege
Code: Alles auswählen
HReadSeekFirst(UV_UAntrag,Antrags_ID,nAntragID)
IF HFound() THEN
// Statusänderung speichern + LOG + Überprüfung
//IF HReadSeekFirst(UV_UAntrag,Antrags_ID,nAntragID) = true THEN // bin ja bereits auf dem DS
// Statusänderungen zuweisen
UV_UAntrag.Status = nStatusNeu
UV_UAntrag.StatusAEDatum = sZeitAngabe
UV_UAntrag.StatusAEName = gsUserNetID
UV_UAntrag.BegruendungAbgeStor = sGrund
// Datum und Unterschrift eintragen wenn genehigt wurde
IF nStatusAktion = konStatusGenehmigt THEN
SWITCH gsUserGruppe
CASE "AL":
UV_UAntrag.AL_Name = gsUserNetID
UV_UAntrag.AL_Datum = sZeitAngabe
CASE "PL":
UV_UAntrag.PL_Name = gsUserNetID
UV_UAntrag.PL_Datum = sZeitAngabe
CASE "GL":
UV_UAntrag.GL_Name = gsUserNetID
UV_UAntrag.GL_Datum = sZeitAngabe
OTHER CASE
END // Switch UserGruppe
END // If genehmigt
// TEST
IF HModify(UV_UAntrag) = False THEN
Warning("Antrag wurde nicht bearbeitet")
END
END
- Error at line 101 of Global Procedure mod_AntragStatus process.
HModify function called.
OLE DB access error.
Error Number = 1020
Unexpected system error.
MfG Gerhard
-
- Junior Member
- Beiträge: 24
- Registriert: 24. März 2011, 21:13
Re: HExecuteSQLQuery und HModify
Hi Gerhard,
ich bin jetzt nicht der 100% WinDev Crack, aber ich behaupte mal, dass dein HExecuteSQLQuery mit dem Fehlschlag von hModify nichts zu tun hat.
Mit dem Hexecutesqlquery machst Du nach meinem Erachten kein Sperre auf einen DS oder sowas. Du lädst ja nur den Inhalt der Tabelle in eine neue Variable ein.
Ich glaube eher, das Problem liegt am HModify selbst. Die Fehlermeldung sagt nicht wirklich viel, was für ne DB verwendest Du denn?
Kannst Du evt. mit einem Trace(ErrorInfo(ErrFullDetails)) direkt nach dem HModify eine genauere Fehlerbeschreibung kriegen?
Ich würde mal folgendes Prüfen:
- Gibt es evt. einen Konflikt mit AutoInc Feldern in der DB?
- Sind die Werte die Du mit dem HModify schreiben willst sinnvoll, also kein String in ein DateTime Feld oder sowas in der Art?
Und Versuch doch mal, Hmodify mit dem Parameter hCurrentRecNum zu machen.
Gruss
Stefan.
ich bin jetzt nicht der 100% WinDev Crack, aber ich behaupte mal, dass dein HExecuteSQLQuery mit dem Fehlschlag von hModify nichts zu tun hat.
Mit dem Hexecutesqlquery machst Du nach meinem Erachten kein Sperre auf einen DS oder sowas. Du lädst ja nur den Inhalt der Tabelle in eine neue Variable ein.
Ich glaube eher, das Problem liegt am HModify selbst. Die Fehlermeldung sagt nicht wirklich viel, was für ne DB verwendest Du denn?
Kannst Du evt. mit einem Trace(ErrorInfo(ErrFullDetails)) direkt nach dem HModify eine genauere Fehlerbeschreibung kriegen?
Ich würde mal folgendes Prüfen:
- Gibt es evt. einen Konflikt mit AutoInc Feldern in der DB?
- Sind die Werte die Du mit dem HModify schreiben willst sinnvoll, also kein String in ein DateTime Feld oder sowas in der Art?
Und Versuch doch mal, Hmodify mit dem Parameter hCurrentRecNum zu machen.
Gruss
Stefan.
Re: HExecuteSQLQuery und HModify
Hi,
es funktioniert jetzt!
Ich habe WinDev 17 installiert und das Projekt damit geöffnet. Jetzt klappt es ohne Probleme.
Es lag an der WinDev Version, denn wenn ich ein Backup des Projektes mit WinDev 16 öffne existiert der Fehler weiterhin.
Das selbe Backup funktioniert, nach der Migration nach WinDev 17, einwandfrei.
Danke für die Hilfe!
MfG Gerhard
es funktioniert jetzt!
Ich habe WinDev 17 installiert und das Projekt damit geöffnet. Jetzt klappt es ohne Probleme.
Es lag an der WinDev Version, denn wenn ich ein Backup des Projektes mit WinDev 16 öffne existiert der Fehler weiterhin.
Das selbe Backup funktioniert, nach der Migration nach WinDev 17, einwandfrei.
Danke für die Hilfe!
MfG Gerhard