Toon posts:

[VB/Acces] SQL Result in Variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer in mijn (access, don't ask why..) database op het moment dat ik een form submit, een maximum waarde uit een andere tabel op te zoeken, en deze in een andere tabel op te slaan. Dit wil ik eigelijk doen met behulp van een tijdelijke variabele, waar ik het resultaat van de query in opsla. Wat ik nu heb:

code:
1
2
3
  Dim LastID As String
                LastID = "SELECT MAX(FactuurID) FROM FACTUREN"
  DoCmd.RunSQL LastID


Ik ben nou nog niet zo'n held in VB, maar het lukt me niet het resultaat van deze query in een variabele op te slaan, bijvoorbeeld "MaxFactuurID"? Ik wil hem namelijk daarna in een andere tabel opslaan:

code:
1
2
SQLInsert = "INSERT INTO Inschrijvingen (KlantID, CursusID, FactuurID) VALUES
( " & Me.Combo6.Value & "," & Me.Combo8.Value & "," & MaxFactuurID & " );"

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 10:26

pistole

Frutter

je zou het kunnen combineren in één statement:

SQL:
1
2
3
4
5
6
7
8
INSERT INTO 
    Inschrijvingen (KlantID, CursusID, FactuurID)
SELECT
    eerste waarde van je formulier,
    tweede waarde van je formulier,
    max(FactuurID)
FROM
    FACTUREN

[ Voor 12% gewijzigd door pistole op 16-01-2004 00:15 ]

Ik frut, dus ik epibreer


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Als je een SQL statement runt, wordt deze enkel uitgevoerd. Dit is vooral interessant als je een insert, update of delete query wilt uitvoeren. Wanneer je echter een recordset terug wilt krijgen, zul je die ook wel ergens moeten declareren.

Als je ook echt binnen de Access database programmeert (VBA) is dit zelfs nog wat eenvoudiger te realiseren dan wanneer je met VB tegen een Access database aan zit te schurken. Je zult in ieder geval een recordset moeten openen, welke het resultaat van jouw query bevat. Hiervan kun je dan de waarde van een van de velden in de recordset opvragen.

Belangrijkste woorden in die laatste zin (zoektips ;)) zijn Recordset, Query, Veld. Sla er de MSDN eens op na en knutsel maar eens een en ander in elkaar. Mocht het je niet lukken: let us know... ;)

My personal website


Verwijderd

Topicstarter
Ah, ik lijk ergens te komen! Jippie!

Ik heb nu

code:
1
2
3
4
5
Dim Inschrijving As String
      Inschrijving = "INSERT INTO Inschrijvingen (KlantID, CursusID, FactuurID) 
SELECT " & Me.Combo6.Value & "," & Me.Combo8.Value & ", max(FactuurID) FROM Facturen"
                
DoCmd.RunSQL Inschrijving


Dit maakt prachtig een nieuwe rij aan in de tabel Inschrijvingen! Maar... hij maakt nu op een of andere manier 2 keer een rij aan, 1 keer mét een factuurID ingevuld, en ook 1 keertje met factuurID blanco! Lekker leip, maar ik zou wel ergens iets doms verkeerd doen ;) Morgen maar weer verder kijken dan... :)