Controle op SQL (access) query vanuit VB

Status
Niet open voor verdere reacties.

buick

Terugkerende gebruiker
Lid geworden
6 sep 2001
Berichten
2.901
Besturingssysteem
Windows 10/11
Hallo, daar ben ik weer ;)

Ik ben een prog aan het maken waarvanuit ik gebruikersinstellingen kan opslaan van bepaalde gebruikers voor bv online games.

Op zich werkt alles zoals ik wil, alleen wil ik graag kunnen controleren of een query ook (goed) is uitgevoerd.

Zie het volgende voorbeeld :

Code:
Dim USERDB As Database
Dim rs As Recordset
Dim SQL As String
Dim result As String
Dim DBLocation As String
Dim test As String

'SQL = "UPDATE tblUSERS SET UserSettings =" & Settings & " WHERE UserID='" & UserID & "'"
DBLocation = App.Path & "\USERDB.mdb"

Set USERDB = OpenDatabase(DBLocation)
USERDB.Execute (SQL)
USERDB.Close

Zoals ik al schreef werkt het wel, maar ik kan niet controleren of de query is uitgevoerd.
ALs ik bv nu een niet bestaande usernaam opgeef, krijg ik geen foutmelding of iets, maar wordt er ook niets geupdate.

Heeft iemand een idee of dit simpel is op te lossen, of moet ik er dan eerst een SELECT query aan vooraf laten gaan?

Alvast bedankt voor het meedenken
 
Controle zou je achteraf kunnen doen m.b.v. een SELECT query en een Response.Write melding dat de settings voor betreffende user gewijzigd zijn van ... naar ...
 
Controle kun je uitvoeren met behulp van 'transaction'. Query's worden uitgevoerd, maar mocht er iets fout gaan dan vind er op alle uitgevoerde query's een rollback plaats. Google of lees iets erover en het wordt je duidelijk waarom.
 
Ben zelf nog allemaal aan het leren hoe het in mekaar zit dus het is maar een gok die ik hier nu waag é ;)

kan je niets bereiken met de ExecuteNonQuery ?

AantalRijen = commando.ExecuteNonQuery

Dan krijg je het aantal rijen dat aangepast is. Als AantalRijen 0 is, dan is er niets aangepast.


Is maar een idee é :o
 
Dat klopt aardig. Hier een voorbeeldje van transaction. Mocht er dus iets fout gaan binnen de 'try-block', dan wordt alles teruggedraaid..

Code:
'Transaction
Dim Trans As SqlTransaction = conSql.BeginTransaction()
Dim cmSql As SqlCommand = New SqlCommand(strQuery, conSql)
Dim sglDA As New SqlDataAdapter(cmSql)
Dim sqlDS As New DataSet

cmSql.Connection = conSql
cmSql.Transaction = Trans

Try
	strQuery = "Query 1"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	strQuery = "Query 2"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	strQuery = "Query 3"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	strQuery = "Query 4"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	strQuery = "Query 5"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	strQuery = "Query 6"
	cmSql.CommandText = strQuery
	cmSql.ExecuteNonQuery()

	Trans.Commit()

	MsgBox("De relaties zijn gemigreerd!")
Catch ex As Exception
	Trans.Rollback()

	MsgBox("Er is iets mis gegaan bij het migreren van de relaties!")
Finally
	conSql.Close()
End Try
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan