HExecuteSQLQuery und HModify

Alle Themen rund um die Erstellung von Programmen
Antworten
GHard
Junior Member
Beiträge: 12
Registriert: 29. September 2011, 09:52

HExecuteSQLQuery und HModify

Beitrag von GHard »

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

stefan.kern
Junior Member
Beiträge: 24
Registriert: 24. März 2011, 21:13

Re: HExecuteSQLQuery und HModify

Beitrag von stefan.kern »

Hallo Gerhard,

kannst Du mal etwas Code posten?
Was sagt die Fehlermeldung?

GHard
Junior Member
Beiträge: 12
Registriert: 29. September 2011, 09:52

Re: HExecuteSQLQuery und HModify

Beitrag von GHard »

Ja , sicher.

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
HModify:

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
Fehlermeldung:
  • 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

stefan.kern
Junior Member
Beiträge: 24
Registriert: 24. März 2011, 21:13

Re: HExecuteSQLQuery und HModify

Beitrag von stefan.kern »

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.

GHard
Junior Member
Beiträge: 12
Registriert: 29. September 2011, 09:52

Re: HExecuteSQLQuery und HModify

Beitrag von GHard »

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

Antworten