Ga naar inhoud

[VB 2005] updaten in access database


Aanbevolen berichten

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
Link naar reactie
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]
Link naar reactie
[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.
Link naar reactie
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?
Link naar reactie
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 .
Link naar reactie
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
Link naar reactie
[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.
Link naar reactie
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.
Link naar reactie
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
Link naar reactie
[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 :)
Link naar reactie
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
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...