anoniem Geplaatst: 6 juni 2006 Delen Geplaatst: 6 juni 2006 ik heb een access database aan m'n project gekoppelt en heb een listbox met de gerbuikers in m'n formulier(zie plaatje). [img:19b6b63573]http://www.have-fun.nl/database.jpg[/img:19b6b63573] Nu wil ik als je op het knopje drukt 3 erbij dat hij dan in de colom geld er 3 bij telt. Heb al in de help en op internet gezocht maar weet iemand waar ik een goede nederlandse uitleg kan vinden of is er iemand die kan vertellen hoe dit moet Quote Link naar reactie
anoniem Geplaatst: 6 juni 2006 Auteur Delen Geplaatst: 6 juni 2006 Eerst doe je dit: [code:1:6598ab382c] geld = txtGeld.text [/code:1:6598ab382c] Om de waarde in de database te veranderen geef je deze opdracht: [code:1:6598ab382c] 'voor een integer in database dit: INSERT INTO tabel_naam (geld) VALUES (" + geld + ") 'als het een string moet zijn dit: INSERT INTO tabel_naam (geld) VALUES ('" + geld + "')[/code:1:6598ab382c] voor je textbox doe je dan gewoon dit erbij: [code:1:6598ab382c]txtGeld.text = geld[/code:1:6598ab382c] Quote Link naar reactie
anoniem Geplaatst: 6 juni 2006 Auteur Delen Geplaatst: 6 juni 2006 oke, dat maakt alles een beetje duidelijk maar ik krijg fouten met de query: Error: Name 'INSERT' is not declared. Error: Name 'INTO' is not declared. hoe krijg ik dit eruit? Quote Link naar reactie
anoniem Geplaatst: 6 juni 2006 Auteur Delen Geplaatst: 6 juni 2006 [quote:234f615506="have-fun"]oke, dat maakt alles een beetje duidelijk maar ik krijg fouten met de query: Error: Name 'INSERT' is not declared. Error: Name 'INTO' is not declared. hoe krijg ik dit eruit?[/quote:234f615506] Door de opdracht als een string door te geven, en er een update van te maken, aangezien ik denk dat je je formulier vult vanuit de database... [code:1:234f615506] "UPDATE tabel_naam SET geld = " + geld + " WHERE <unieke id> = " + <unieke id> [/code:1:234f615506] of [code:1:234f615506] "UPDATE tabel_naam set geld = '" + geld + "' WHERE <unieke id> = " + <unieke id> [/code:1:234f615506] Daarbij denk ik dat je dit niet helemaal wilt. Als ik het goed begrijp, wil je bij de waarde die al in het tekstvak "geld" staat, 3 optellen. Om even bij je plaatje te blijven: -11,35 + 3 Laten we er even vanuit gaan dat je voor geld het veldtype "Valuta" hebt gekozen. Je moet dan een variabele van het type Decimal declareren, en daar de waarde van je tekstveld in plaatsen. Tel er vervolgens 3 bij op, en sla deze waarde dan op in je database. Vergeet dan niet om aan te geven om welk record het gaat. In code:[code:1:234f615506] Dim geld As Decimal geld = CType(txtGeld.Text, Decimal) [/code:1:234f615506] En dan de update statements. Mocht je nou voor een ander datatype hebben gekozen (Double, Single, of iets dergelijks) dan kun je waar nu Decimal staat vervangen door het betreffende Type. Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 hij geeft nu een foutmelding als ik op de knop druk: Conversion from string "UPDATE gebruikers SET geld = '" to type 'Double' is not valid. dit is de code die ik heb: [code:1:ae35f5b080] Dim geld As Decimal Dim updatetest As String geld = CType(txtGeld.Text, Decimal) updatetest = "UPDATE gebruikers SET geld = '" + geld + "' WHERE id = " + IdTextBox.Text + "" [/code:1:ae35f5b080] en in de database is geld een valuta, maar wat is er dan fout? Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 Probeer het eens met [code:1:7075e82b23]geld.ToString()[/code:1:7075e82b23]Dus [code:1:7075e82b23]updatetest = "UPDATE gebruikers SET geld = '" + geld.ToString + "' WHERE id = " + IdTextBox.Text + "" [/code:1:7075e82b23] Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 Dan probeer je een string op te slaan in een double-veld en dat geeft net zo hard een foutmelding. Ik denk dat de decimaalkomma in de valutastring in de weg zit. Dat moet een punt zijn in de query. Ik doe dat meestal met Replace en in de query dus zonder 'quotes': [code:1:af343c8d15] updatetest = "UPDATE gebruikers SET geld = " + Replace(geld.ToString, ",", ".") + " WHERE id = " + IdTextBox.Text [/code:1:af343c8d15] Ik haal de laatste tekens weg, want daarmee zeg je hetzelfde als . Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 ik heb nu deze code: [code:1:e3d60e959b] Dim geld As String Dim updatetest As String geld = CType(txtGeld.Text, Decimal) geld = geld + 3 updatetest = "UPDATE gebruikers SET geld = " + Replace(geld.ToString, ",", ".") + " WHERE id = " + IdTextBox.Text [/code:1:e3d60e959b] Hij geeft geen foutmelding meer maar als ik op de knop druk gebeurt er niks ook niet als het opnieuw opstart is er niks in de database veranderd. ik had er daarom txtGeld.Text = geld onder de update gezet, dan zie je wel dat hij telkens 3 erbij telt maar het komt niet in de database Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 [quote:d50d922688="have-fun"]hij geeft nu een foutmelding als ik op de knop druk: Conversion from string "UPDATE gebruikers SET geld = '" to type 'Double' is not valid.[/quote:d50d922688] Hier maak ik uit op dat je de query op een Connection-object execute (de query aan de database geven om hem uit te voeren), maar dat zie ik in je code niet terug. Met alleen de query in een variabele stoppen ben je er nog niet. Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 oke, en wat moet er nog meer mee dan? Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 Aan de database geven. Ik doe in vba altijd: Set conn = CreateObject("ADODB.Connection") conn.Open connectionstring ' (hier moet een geldige connectionstring staan) conn.Execute "UPDATE Table1 SET ..." maar dat zal in vb.NET wel weer anders moeten, bovendien heb je daar al een connection actief omdat je een listbox vult, die kun je prima hergebruiken. Google weet altijd wel raad met dat soort dingen: "vb.net connection adodb execute query" ofzwiets. Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 ik heb net uitgevonden dat je met visual basic express query's kan aanmaken en dat je die dan als een functie aan kan roepen het is dus gelukt. Maar ik veronderstel dat hij in de debug na het afsluiten de database niet overneemt maar gewoon leeg gooit. hij veranderd wel telkens maar als ik hem opnieuw opstart is hij weer normaal Quote Link naar reactie
anoniem Geplaatst: 7 juni 2006 Auteur Delen Geplaatst: 7 juni 2006 [quote:710237d8b7="have-fun"]ik heb net uitgevonden dat je met visual basic express query's kan aanmaken en dat je die dan als een functie aan kan roepen het is dus gelukt. Maar ik veronderstel dat hij in de debug na het afsluiten de database niet overneemt maar gewoon leeg gooit. hij veranderd wel telkens maar als ik hem opnieuw opstart is hij weer normaal[/quote:710237d8b7] Vooruit, ik doe ook nog een poging ;) Wat Paulus zegt klopt. Je geeft de opdracht waarschijnlijk nog niet aan de database door. Want ook als je aan het debuggen bent, worden de wijzigingen als het goed is aan de database doorgegeven. Anyway. Waarschijnlijk heb je al een connectieobject voor de verbinding met je database. Je zal dan alleen nog een OleDbCommand object moeten hebben, die de update query voor je uitvoert. In code:[code:1:710237d8b7] Dim cmd As New System.Data.OleDb.OleDbCommand() <de code om je updatetekst te maken> cmd.Connection = <je eigen connectieobject> cmd.CommandType = CommandType.Text cmd.CommandText = <updatestring> cmd.ExecuteNonQuery() [/code:1:710237d8b7] En dan nog wat foutafhandeling toevoegen natuurlijk :) Quote Link naar reactie
anoniem Geplaatst: 8 juni 2006 Auteur Delen Geplaatst: 8 juni 2006 naja, ik heb het nu werkend maar heb nog een klein vraagje: ik heb dus een nieuwe gebruiker toegevoegd in een extra application form. Als je dit gedaan hebt ga je weer terug naar het begin scherm(zie plaatje bovenin) maar hier heeft hij de listbox nog niet geupdate, hoe zorg je ervoor dat hij dit wel doet als hij een gebruiker heeft toegevoegd? ik probeerde al: Form1.Update() maar dit haalde niks uit Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen