Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   VB & MySQL (https://forum.scholieren.com/showthread.php?t=468869)

-= Mr.Whoopee=- 06-05-2003 15:56

VB & MySQL
 
Hey,

Ik ben nu een programma in VB aan het maken. Dit programma is gekoppeld aan een MySQL Database. Ik heb MyOLEDB 3, VB 6 en MySQL 3.23.49.

Als ik nu een recordset probeer te updaten dan krijg ik voortdurend errors.

Bijv.:
- dat de recordset niet geupdate kan worden omdat hij hem niet meer kan vinden -> doordat hij gewijzigd is sinds de laatste keer.
- dat de recordset niet geupdate kan worden door de verkeerde LockType (dat is alleen de locktype veranderen dus dat lukt wel)
- dat er fouten zijn opgetreden bij een bewerking die uit meerdere stappen bestaat.

Kan iemand mij vertellen hoe ik recordsets kan updaten?
Wat voor LockType, CursorType en CursorLocation ik moet gebruiken?

Ik gebruik (o.a.) deze query: "SELECT * FROM accounts WHERE username = ' " & username & "'", DBConn
(DBConn is uiteraard de connectie met de database)

Ik heb wel andere programmaatjes (niet door mij geschreven) die ik als voorbeeld gebruik, maar als ik precies hetzelfde doe dan werkt het niet..

Voor de rest werkt alles wel: gegevens ophalen, nieuwe recordsets toevoegen, recordsets verwijderen etc...
Alleen het updaten werkt dus niet.

Ik hoop dat iemand mij hiermee kan helpen.

Alvast bedankt!

Enlightenment 06-05-2003 16:21

Citaat:

-= Mr.Whoopee=- schreef op 06-05-2003 @ 16:56:
Ik gebruik (o.a.) deze query: "SELECT * FROM accounts WHERE username = ' " & username & "'", DBConn
(DBConn is uiteraard de connectie met de database)

Ik weet weinig over VB, maar deze SQL query kan niet helemala volgen.

SELECT *
FROM accounts
WHERE username = "blah"
AND nummer = 13

Ik weet niet wat jij doet boven, maar weet je zeker dat je query wel goed is?

-= Mr.Whoopee=- 06-05-2003 16:35

Die query is iig wel goed om gegevens uit een db te halen:
Dit staat er dus eigenlijk:

"SELECT * FROM accounts WHERE username = 'Mr.Whoopee'", DBConn

maar ik weet niet of je deze ook kan gebruiken bij updaten..

Enlightenment 06-05-2003 16:44

Oh oke, dan heb ik verkeerd gezien. :)

Met je VB probleem kan ik je helaas niet helpen. :(

-= Mr.Whoopee=- 06-05-2003 19:53

Ow.. jammer...
Iemand anders? Of iemand die weet waar ik het kan vinden?

Stijn 06-05-2003 20:00

Citaat:

-= Mr.Whoopee=- schreef op 06-05-2003 @ 16:56:
Hey,

Ik ben nu een programma in VB aan het maken. Dit programma is gekoppeld aan een MySQL Database. Ik heb MyOLEDB 3, VB 6 en MySQL 3.23.49.

Als ik nu een recordset probeer te updaten dan krijg ik voortdurend errors.

Bijv.:
- dat de recordset niet geupdate kan worden omdat hij hem niet meer kan vinden -> doordat hij gewijzigd is sinds de laatste keer.
- dat de recordset niet geupdate kan worden door de verkeerde LockType (dat is alleen de locktype veranderen dus dat lukt wel)
- dat er fouten zijn opgetreden bij een bewerking die uit meerdere stappen bestaat.

Kan iemand mij vertellen hoe ik recordsets kan updaten?
Wat voor LockType, CursorType en CursorLocation ik moet gebruiken?

Ik gebruik (o.a.) deze query: "SELECT * FROM accounts WHERE username = ' " & username & "'", DBConn
(DBConn is uiteraard de connectie met de database)

Ik heb wel andere programmaatjes (niet door mij geschreven) die ik als voorbeeld gebruik, maar als ik precies hetzelfde doe dan werkt het niet..

Voor de rest werkt alles wel: gegevens ophalen, nieuwe recordsets toevoegen, recordsets verwijderen etc...
Alleen het updaten werkt dus niet.

Ik hoop dat iemand mij hiermee kan helpen.

Alvast bedankt!

Staat je cursor type wel goed?

-= Mr.Whoopee=- 06-05-2003 21:04

Ik heb mijn CursorType op adUseClient staan..
maar ik heb het ook al geprobeerd met adUseServer geprobeerd

Code:

Public Sub UpdateUser(I)
Dim UAUsername, UAScreenX, UAScreenY, UAPosX, UAPosY, UAChar As String
    Set RsUpdateAll = New ADODB.Recordset
    RsUpdateAll.CursorType = adOpenStatic
    RsUpdateAll.CursorLocation = adUseClient
    RsUpdateAll.LockType = adLockOptimistic
   
    RsUpdateAll.Open "SELECT * FROM accounts", DBConn
        If RsUpdateAll("CharacterName") = Form1.FGUsers.TextMatrix(I, 5) Then
            RsUpdateAll("ScreenX").Value = Form1.FGUsers.TextMatrix(I, 1)
            RsUpdateAll("ScreenY").Value = Form1.FGUsers.TextMatrix(I, 2)
            RsUpdateAll("posX").Value = Form1.FGUsers.TextMatrix(I, 3)
            RsUpdateAll("posY").Value = Form1.FGUsers.TextMatrix(I, 4)
            Exit Sub
        Else
            RsUpdateAll.MoveNext
        End If
        'MsgBox UAUsername & vbCrLf & UAScreenX & vbCrLf & UAScreenY & vbCrLf & UAPosX & vbCrLf & UAPosY
        'RsUpdateAll.Update
        'RsUpdateAll.Close
End Sub

Ik hoop dat de layout nog een beetje netjes blijft...


Hij geeft nu vooral de fout bij RsUpdateAll.Update (hier eruit gecommented)

Hedgehog 07-05-2003 10:04

Citaat:

"SELECT * FROM accounts WHERE username = ' " & username & "'", DBConn
Weet je zeker dat dat goed gaat?
Je hebt namelijk wel quotes binnen de quotes, deze " quote zeg maar.

-= Mr.Whoopee=- 07-05-2003 10:45

Die quotes moeten wel..
anders geeft ie aan dat hij de column niet kon vinden in de DB (en het is dus geen column maar gewoon een waarde die in de column username/charactername staat)

dat klopt wel..
maar ik weet dus niet of ik wel WHERE mag en kan gebruiken bij het updaten.. ik heb namelijk voorbeelden waar ze dat niet bij doen en waar het updaten wel werkt..
maar daar updaten ze gewoon degene die je op dat moment hebt geselecteerd of alle rijen in één keer...
maar ik moet dus speciaal deze hebben..

-= Mr.Whoopee=- 07-05-2003 10:49

Trouwus.. deze code heb ik nog zo aangepast dat hij gewoon door alle accounts heen loopt en dan kijkt of de charactername hetzelfde is. Als dat het geval is dan gaat ie updaten.. Dus zonder WHERE.

maar het wil maar niet werken.. (bij de .update blijft ie altijd hangen..)

Hedgehog 07-05-2003 11:01

bij UPDATE kan je WHERE gebruiken dat is geen probleem wel een probleem als je het niet gebruikt bij veel handelingen hehe
maar wat ik met de quotes bedoel is dat hij misschien alleen dit: "SELECT * FROM accounts WHERE username = ' " leest, maar weet het niet zeker ik gebruik het niet in combinatie met vb maar met php.
Misschien dat " " er wel tussen mag als het tussen ' ' zit zoals bij jou maar dat heb ik nog nooit geprobeerd...
Nou veel succes er maar mee.

-= Mr.Whoopee=- 07-05-2003 11:28

In VB gaat dat een beetje moeilijk.. (die quotes omdraaien)

want als je deze ' niet binnen deze " zet dan wordt het dus een comment.. en dat moet dus niet..
ik kan ze ook niet weg laten want dan werkt het ook niet..

maar iig bedankt

Hedgehog 07-05-2003 11:48

Nee je begrijpt me verkeerd, maar ik ben ook erg slecht in uitleggen.
Code:

"SELECT * FROM accounts WHERE username = ' <gebruikersnaam hier> ' "
dat is zeg maar wat de bedoeling is
maar ik weet niet of dat met vb te maken heeft ofzo, maar dit:
Code:

"SELECT * FROM accounts WHERE username = ' "<gebruikersnaam hier> " ' "
zal volgens mij gelezen worden als
Code:

"SELECT * FROM accounts WHERE username = ' "
maar dat weet ik niet zeker, omdat jij met vb werkt...
denk dat je er weinig aan zult hebben, maar ik weet ook niet of daar het probleem bij jou zit.

dafelix 07-05-2003 11:50

Citaat:

-= Mr.Whoopee=- schreef op 07-05-2003 @ 12:28:
In VB gaat dat een beetje moeilijk.. (die quotes omdraaien)

want als je deze ' niet binnen deze " zet dan wordt het dus een comment.. en dat moet dus niet..
ik kan ze ook niet weg laten want dan werkt het ook niet..

maar iig bedankt

ik kan het niet helemaal volgen (ik lees te snel), maar bij het inlezen iig maakt het niet uit tussen of er quote's staan

als je in VB een " in een string wil zetten moet je Char(34) gebruiken dus:

String = "Ik zeg:" & Chr(34) & " bedankt " & Chr(34) & "."

goed ik zal er wel weer helemaal naast zitten odmat ik niet goed lees....

-= Mr.Whoopee=- 07-05-2003 11:56

Ik denk eigenlijk dat het probleem niet bij die quotes zit..
maar ik snap ook niet waarom hij de fout melding geeft dat hij de recordset niet meer kan vinden.

Alle gegevens kloppen, de database werkt en kan ik gewoon gebruiken vanuit VB, maar het updaten wil hij dus gewoon niet doen.

Dus met RsUpdateAll.update
maar bedankt voor jullie hulp.. als jullie nog wat ideeen hebben hoor ik ze graag..

Hedgehog 07-05-2003 11:58

Als je bedoelt updaten naar de database, waar is die query dan?

-= Mr.Whoopee=- 07-05-2003 12:02

de query is dus die query die er in staat..
maar om vanuit VB met MySQL te werken moet het updaten anders.

Zo bijvoorbeeld:

[query]
RsUpdateAll("username").value = "nieuwe username"
RsUpdateAll.Update

Terwijl je bijvoorbeeld in PHP gewoon de update query gebruikt.
maar die bestaat dus niet in de VB versie...

Hedgehog 07-05-2003 12:06

Nee okay, de verschillen zijn te groot dus ik kan je niet helpen.
Misschien dat er later nog eens iemand komt loeren die het wel weet.

WijfMan 07-05-2003 12:45

Citaat:

Hedgehog schreef op 07-05-2003 @ 12:48:
Nee je begrijpt me verkeerd, maar ik ben ook erg slecht in uitleggen.
Code:

"SELECT * FROM accounts WHERE username = ' <gebruikersnaam hier> ' "
dat is zeg maar wat de bedoeling is
maar ik weet niet of dat met vb te maken heeft ofzo, maar dit:
Code:

"SELECT * FROM accounts WHERE username = ' "<gebruikersnaam hier> " ' "
zal volgens mij gelezen worden als
Code:

"SELECT * FROM accounts WHERE username = ' "
maar dat weet ik niet zeker, omdat jij met vb werkt...
denk dat je er weinig aan zult hebben, maar ik weet ook niet of daar het probleem bij jou zit.

Int = "test"
"Dit is een ' " & Int & " ' regel."

Die & zorgt er voor dat het aan elkaar wordt geplakt, of zo
En die vergeet jij :)

Er komt dus uit: Dit is een ' test ' regel.
Tja, zo werkt het nu eenmaal in vb :)

Hedgehog 07-05-2003 14:05

Ja ik weet wel genoeg manieren en shit om het op te lossen met de combinatie php/mysql, maar ik weet zo goed als niks van vb.

Wassup!! 07-05-2003 21:30

Het is maar een idee, maar in Access kun je gebruikmaken van de DoCmd.RunSQL

voorbeeldje:

Code:

DoCmd.RunSQL("UPDATE * WHERE username='" & username & "'")
maar zoals gezegd, dat was in Access VB, dus weet niet zeker of dat ook in gewoon VB kan.

succes er mee...


[edit]welke dickhead gaat er eigenlijk in VB programmeren? Voel jij je wel helemaal lekker of zo ? :p

jk ;)[/edit]

-= Mr.Whoopee=- 08-05-2003 10:09

en heel erg bedankt...[over wie er in VB gaat programmeren]
tja... ik ben nog steeds met VB bezig..
Delphi ook wel wat.. maar nog steeds geen enige vorm van C..
maar ik vind het zo wel prima, want ik doe op het moment tog meer met PHP, ASP etc.. (websites dus gewoon eigenlijk)

Maar ik was hiermee begonnen in VB en ik heb niet zoveel zin en tijd om nu iets anders te leren..
dat komt allemaal nog wel.. [hoop ik dan :D]

maar goed...
iig die query met "UPDATE ..." die bestaat dus niet met VB & MySQL [MyOLEDB], tenminste.. dat geeft ie aan.. en op internet stond dat ook..

-= Mr.Whoopee=- 09-05-2003 10:42

Nog ff een keertje proberen...

weet iemand anders een website / forum waar ik het kan vragen?

Wassup!! 09-05-2003 12:03

Porbeer het eens op Tweakers.net

Enlightenment 09-05-2003 15:24

Citaat:

-= Mr.Whoopee=- schreef op 09-05-2003 @ 11:42:
Nog ff een keertje proberen...

weet iemand anders een website / forum waar ik het kan vragen?

http://gathering.tweakers.net


Alle tijden zijn GMT +1. Het is nu 23:28.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.