login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[vb] laatste id ophalen

Offline Stefan14 - 20/07/2009 20:00
Avatar van Stefan14PHP gevorderde Een zoektocht op internet leverde weinig op.

Hoe haal ik het laatste id op wat bij de laatste query is toegekend?
Dus hetzelfde als mysql_insert_id, maar dan nu voor VB.

9 antwoorden

Gesponsorde links
Offline Koen - 20/07/2009 20:05 (laatste wijziging 20/07/2009 20:05)
Avatar van Koen PHP expert Voer een tweede query uit:
  1. SELECT LAST_INSERT_ID()
 
Offline Wim - 20/07/2009 20:56
Avatar van Wim Crew algemeen volgens mij is dit correcter voor mssql:
  1. SELECT @@IDENTITY FROM TABLE
Offline Stefan14 - 20/07/2009 23:11 (laatste wijziging 20/07/2009 23:12)
Avatar van Stefan14 PHP gevorderde Ik heb nog niet zoveel ervaring met databases en vb.

Op internet kom ik heel veel verschillende manieren tegen.

Hoe kan ik uit onderstaande query met een extra query dat id eruit halen? En dat id dan in een variabele zetten?

  1. Dim Cmd As OleDb.OleDbCommand
  2. Dim SQL As String
  3. Dim objCmd As New OleDb.OleDbCommand
  4.  
  5. Dim Con = OleDbConnection1
  6.  
  7. SQL = "INSERT INTO klanten (naam, adres, postcode, woonplaats, telefoon, datum, boek, opdrachtnummer, totaalbedrag, valuta, opmerkingen) VALUES ('" & KlantnaamText.Text & "', '" & KlantadresText.Text & "', '" & KlantpostcodeText.Text & "', '" & KlantwoonplaatsText.Text & "', '" & KlanttelefoonText.Text & "', '" & DatumText.Text & "', '" & BoekText.Text & "', '" & OpdrachtnummerText.Text & "', '" & TotaalbedragText.Text & "', '" & Valuta & "', '" & OpmerkingenText.Text & "')"
  8. Cmd = New OleDb.OleDbCommand(SQL, Con)
  9.  
  10. Con.Open()
  11. objCmd = New OleDb.OleDbCommand(SQL, Con)
  12. objCmd.ExecuteNonQuery()
  13. Con.Close()
Offline Abbas - 21/07/2009 04:00
Avatar van Abbas Gouden medaille

Crew .NET
Of je kan ook gewoon ExecuteScalar() gebruiken...

  1. Dim id As Integer
  2. Cmd = New OleDbCommand(strQuery, MyConn)
  3.  
  4. Try
  5. Con.Open()
  6. Cmd.ExecuteNonQuery()
  7. id = Cmd.ExecuteScalar()
  8. Catch ...
  9. ...
  10. Finally
  11. ...
  12. End Try

Btw: waarom wordt er twee keer een SqlCommand gedeclareerd?!?!
Offline Stefan14 - 26/07/2009 01:16 (laatste wijziging 26/07/2009 01:33)
Avatar van Stefan14 PHP gevorderde Het wil nog niet direct lukken.

Code is als volgt:

  1. SQL = "SELECT @@IDENTITY FROM klanten"
  2.  
  3. Con.Open()
  4. Cmd = New OleDb.OleDbCommand(SQL, Con)
  5. Cmd.ExecuteNonQuery()
  6. Dim KlantId As Integer = Cmd.ExecuteScalar()
  7. Con.Close()


De query wordt wel uitgevoerd, maar als ik vervolgens de variabele in een andere query gebruik om hem op te slaan in een andere tabel blijft dat veld in de database leeg. Oftewel die variabele heeft geen waarde.

Nu staat die volgende query wel binnen een if lus, en heb daar reeds eerder 'problemen' mee gehad.
Kan dit een reden zijn?
Offline meerweten - 26/07/2009 10:00
Avatar van meerweten Lid er bestaan boeken van van vb

zoek die eens op en je vind je antwoord wel
Offline Stefan14 - 26/07/2009 16:39
Avatar van Stefan14 PHP gevorderde Ik heb hier 3 boeken van vb liggen. Maar ik kan je zeggen dat het daar niet in staat. Daar wordt alleen gepraat over het datagrid als het over databases gaat.
Offline Abbas - 28/07/2009 16:56
Avatar van Abbas Gouden medaille

Crew .NET
meerweten schreef:
er bestaan boeken van van vb

zoek die eens op en je vind je antwoord wel
Dit is zowat de meest belachelijke reactie die ik hier in lange tijd gelezen heb!!!

Ontopic:
Misschien best om de variabele op voorhand te declareren zodat deze "gekend" is overal waar je ze kan nodig hebben.
Offline Stefan14 - 01/08/2009 15:51 (laatste wijziging 01/08/2009 15:51)
Avatar van Stefan14 PHP gevorderde Ook wanneer ik de variabele vooraf al declareer, werkt het niet.

Code:
  1. Dim KlantId As Integer
  2.  
  3. SQL = "SELECT @@IDENTITY FROM klanten"
  4.  
  5. Try
  6. Con.Open()
  7. Cmd = New OleDb.OleDbCommand(SQL, Con)
  8. Cmd.ExecuteNonQuery()
  9. KlantId = Cmd.ExecuteScalar()
  10. Con.Close()
  11. Catch ex As Exception
  12. MsgBox(ex.Message)
  13. End Try
  14.  
  15. If (Productenaantal1.Text > 0) Then
  16. SQL = "INSERT INTO bestellingen (klantID, opdrachtID) VALUES ('" & KlantId & "', '" & OpdrachtnummerText.Text & "')"
  17.  
  18. Try
  19. Con.Open()
  20. Cmd = New OleDb.OleDbCommand(SQL, Con)
  21. Cmd.ExecuteNonQuery()
  22. Con.Close()
  23. Catch ex As Exception
  24. MsgBox(ex.Message)
  25. End Try
  26. End If
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.27s