meerdere gegevens uit keuzelijst

Status
Niet open voor verdere reacties.

dollo

Gebruiker
Lid geworden
1 jan 2008
Berichten
118
beste mensen ik wil proberen om uit een keulist stoelnummers terug te halen en deze stuk voor stuk aan een naam koppellen en toevoegen aan de database.

stoelenlijst is btw de keuzelijst
cboVoorstelling.Column(2) de zaalnaam
cboVoorstelling.Column(0) de titel
cboVoorstelling.Column(1) de datumtijd van de voorstelling

de rest wijst voorzich lijkt me.

Code:
Dim varitem As Variant
Dim strResNr As String
Dim strzaalnaam As String

If IsNull(txtAchternaam.Value) Then
Else
strResNr = DLookup("reserveringsnummer", "dbo_reservering", "achternaam= '" & txtAchternaam.Value & "' AND plaatsnaam = '" & txtPlaatsnaam.Value & "'")
End If

strzaalnaam = DLookup("zaalnaam", "dbo_uitvoering", "titel= '" & cboVoorstelling.Column(0) & "' AND datumtijd=#" & cboVoorstelling.Value & "#")

For Each varitem In stoelenlijst.ItemsSelected
CurrentDb.Execute "INSERT INTO dbo_bezetting VALUES ('" & stoelenlijst.Column(0, varitem) & "','" & cboVoorstelling.Column(2) & "','" & cboVoorstelling.Column(0) & "','" & cboVoorstelling.Column(1) & "','" & strResNr & "'"
Next varitem

stoelenlijst.Requery

als ik deze uitvoer krijg k foutmelding 94 ( ongeldig gebruik van null)
als ik dan op foutopsproring klik verwijst hij naar:
strResNr = DLookup("reserveringsnummer"...........
maar alle variabelen zijn ingevuld. ook als ik over deze variabelen ga laat hij gewoon de waarden die ingevuld zijn zien.
ik kom hier absoluut niet uit vandaar dat ik julie om hulp vraag.

bij voorbaat dank
 
Probeer 'm eens zo:

Code:
Dim rst as DAO.Recordset
Dim strSQL as string

strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

set rst = currentdb.openrecordset(strsql)
if rst.recordcount <> 0 then
   strResNr = rst(0)
else
   strResNr = ""
End If
rst.close
set rst = nothing
 
dit was niet echt wat ik bedoelde :o
ik bedoelde dat je eerst moet gaan kijken welke waarden er in dboreservering staan.
als dit er 0 zijn doe niets.
anders moet elk item dat is geselecteerd in de databse in de tabel bezetting worden geplaatst. met zaalnaam datutijd en titel.

dus
else
strResNr = ""
zou vervangen moeten worden door iets van: voor elk item dat aanwezig is moet de code
Code:
CurrentDb.Execute "INSERT INTO dbo_bezetting VALUES ('" & stoelenlijst.Column(0, varitem) & "','" & cboVoorstelling.Column(2) & "','" & cboVoorstelling.Column(0) & "','" & cboVoorstelling.Column(1) & "','" & strResNr & "'"
moeten worden uitgevoerd
de vraag is hoe krijg ik dit dus voor elkaar?

tnks
 
Laatst bewerkt:
ik heb nu volgende code.
Code:
Dim rst As DAO.Recordset
Dim varitem As Variant
Dim strSQL As String
Dim strResNr As String

strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then
   strResNr = rst(0)
Else
  For Each varitem In stoelenlijst.ItemsSelected
CurrentDb.Execute "INSERT INTO dbo_bezetting VALUES ('" & stoelenlijst.Column(0, varitem) & "','" & cboVoorstelling.Column(2) & "','" & cboVoorstelling.Column(0) & "','" & cboVoorstelling.Column(1) & "','" & strResNr & "'"
Next varitem
End If

Ik krijg nu de melding u moet de optie dbSeeChanges gebruiken en word doorgewezen naar de regel
Code:
Set rst = CurrentDb.OpenRecordset(strSQL)
ik hoop dat iemand mij hier verder mee kan helpen:D

bij vorbaat dank
 
Ongetest, dus even controleren:
Code:
Dim rst As DAO.Recordset
Dim rstBezetting As DAO.Recordset
Dim strSQL As String
Dim strResNr As String
dim i as integer

strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then
   strResNr = rst(0)
Else
  set rstBezetting = currentdb.openrecordset("SELECT * FROM dbo_bezetting")
  for i=0 to me.stoelenlijst.listcount-1
     if me.stoelenlijst.list(i).selected then
         rstBezetting.Addnew
         rstBezetting("Veld1") = me.stoelenlijst.list(i)
         rstBezetting("Veld2") = me.cboVoorstelling.Column(2,0)
         'etc
         rstBezetting.Update
     end if
  Next
  rstBezetting.close
  set rstBezetting = nothing 
End If
 
ik heb nu deze code

Code:
Private Sub Knop72_Click()
Dim rst As DAO.Recordset
Dim varitem As Variant
Dim strSQL As String
Dim strResNr As String


DoCmd.RunSQL "INSERT INTO dbo_reservering (adres, betaald, geslacht, plaatsnaam, postcode, achternaam, tussenvoegsels , voorletters ) VALUES('" & Me.txtAdres & "', '-1', '" & Me.cboGeslacht & "', '" & Me.txtPlaatsnaam & "', '" & Me.txtPostcode & "', '" & Me.txtAchternaam & "', '" & Me.txtTussenvoegsel & "', '" & Me.txtVoorletters & "')"
    
strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
        
        txtReservering.Value = rst("reserveringsnummer")
        txtReservering.Requery

If rst.RecordCount <> 0 Then
   strResNr = rst(0)
Else
  For Each varitem In stoelenlijst.ItemsSelected
CurrentDb.Execute "INSERT INTO dbo_bezetting VALUES (#" & cboVoorstelling.Column(1) & "# , '" & txtReservering.Value & "' ,'" & stoelenlijst.Column(0, varitem) & "', '" & cboVoorstelling.Column(0) & "', '" & cboVoorstelling.Column(2) & "')"

Next varitem
End If
rst.Close
Set rst = Nothing
End Sub

krijg geen foutmelding meer aleen worden de gegevens niet in de tabel bezetting geplaatst wat wel had moeten gebeuren.
De code die u mee gaf kreeg een foutmelding op het woord list deze bestaat niet, listIndex (die hier veel op lijkt) werkt helaas ook niet.
 
dit werkt nu een heel eind maar weer het probleem dat hij de gegevens niet toevoegd in de tabel bezetting:(
zal de code voor de zekerheid nog hieronder plakken
Code:
Dim rst As DAO.Recordset
Dim strSQL As String
Dim strResNr As String
Dim i As Integer
Dim rstBezetting As DAO.Recordset


DoCmd.RunSQL "INSERT INTO dbo_reservering (adres, betaald, geslacht, plaatsnaam, postcode, achternaam, tussenvoegsels , voorletters ) VALUES('" & Me.txtAdres & "', '-1', '" & Me.cboGeslacht & "', '" & Me.txtPlaatsnaam & "', '" & Me.txtPostcode & "', '" & Me.txtAchternaam & "', '" & Me.txtTussenvoegsel & "', '" & Me.txtVoorletters & "')"
    
strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
        
        txtReservering.Value = rst("reserveringsnummer")
        txtReservering.Requery

If rst.RecordCount <> 0 Then
   strResNr = rst(0)
Else
 Set rstBezetting = CurrentDb.OpenRecordset("SELECT * FROM dbo_bezetting")
  For i = 0 To Me.stoelenlijst.ListCount - 1
     If Me.stoelenlijst.Column(0, i).Selected Then
         rstBezetting.AddNew
         rstBezetting("stoelnummer") = Me.stoelenlijst.Column(0, i)
         rstBezetting("zaalnaam") = Me.cboVoorstelling.Column(2)
         rstBezetting("datumtijd") = Me.cboVoorstelling.Column(1)
         rstBezetting("titel") = Me.cboVoorstelling.Column(0)
         rstBezetting("reserveringsnummer") = txtReservering.Value
         'etc
         rstBezetting.Update
     End If
  Next
  rstBezetting.Close
  Set rstBezetting = Nothing
End If

ik heb hier geen fouten in kunnen vinden heb ik misschien iets over het hoofd gezien:o

bij voorbaat dank
 
Zet eens een breakpoint op
rstBezetting.Update
Dat is waar de update gebeurt. Wellicht wordt de code in deze brach helemaal niet opgeroepen?
 
nee hij word inderdaat niet opgeroepe
dit comt door het stukje code
Code:
If rst.RecordCount <> 0 Then
strResNr = rst(0)
maar omdat hij in het begin word aangemaakt is hij nooit nul dus voert hij deze code uit in plaats van het toevoegen.;)
beetje stom van me :o
maar nu krijg ik de melding object vereist
op de regel
Code:
 Me.stoelenlijst.Column(0, i).Selected Then
want de methode Selected word niet herkend
maar stel ik haal deze weg dan gebeurt er niets dus daar moet wel iets dergelijks komen te staan. maar er zijn geen methoden beschikbaar achter :
Code:
Me.stoelenlijst.Column(0, i)

dus nu is de vraag hoe kan ik dit probleem oplossen:o
 
Laatst bewerkt:
misschien werkt dit wel

Code:
 Me.stoelenlijst.Column(0, i).ActivateThen
 
Laatst bewerkt:
nope werkt ook niet niet:(
maar der kan ook niets achter om het maar even zo te zeggen
normaal als je op de . knop drukt krijg je alle mogelijkheden te zien die komt nu niet
maar toch bedankt voor het mee denken:thumb:
maar als t er niet stat werkt t ook niet :P
dus beetje vreemde situatie nu:confused:
 
als ik het goed begrepen heb wil je de code iets laten doen als een cel geselecteerd is!?
 
ja we hebben dus een kueze lijst hierinstaan stoelnummers
deze moeten moeten in een databse worden geplaatst.
maar omdat je meerder nummers kunt selecteren moet hij kijken welke nummers dit zijn en deze stuk voor stuk in e database plaatsen.
en dat gaat nog niet helemaal goed:(
 
Volgens mij zou
Me.stoelenlijst.Column(0, i).Selected Then
moeten zijn
Me.stoelenlijst.selected(i) Then

maar da's even uit m'n hoofd hoor, heb hier geen office bij de hand (server aan het installeren)
 
oke mooi dat is hem:thumb:

en nu het laatste probleem (waarscheinlijk)
op de de regel
Code:
rstBezetting.Update

ik krijg de melding ODBC: de oproep is mislukt:(

wat kan hier t probleem zijn?
 
oke na het opnieuw opstarten van acces werkt de code wel
ik zal voor iedereen met htezelde problem de code hier nog een keer onderplakken
Code:
Private Sub Knop72_Click()
Dim rst As DAO.Recordset
Dim varitem As Variant
Dim strSQL As String
Dim strResNr As String
Dim i As Integer
Dim rstBezetting As DAO.Recordset


DoCmd.RunSQL "INSERT INTO dbo_reservering (adres, betaald, geslacht, plaatsnaam, postcode, achternaam, tussenvoegsels , voorletters ) VALUES('" & Me.txtAdres & "', '-1', '" & Me.cboGeslacht & "', '" & Me.txtPlaatsnaam & "', '" & Me.txtPostcode & "', '" & Me.txtAchternaam & "', '" & Me.txtTussenvoegsel & "', '" & Me.txtVoorletters & "')"
    
strSQL = "SELECT reserveringsnummer FROM dbo_Reservering WHERE Achternaam= '" & txtAchternaam.Value & "' " & _
         "AND plaatsnaam = '" & txtPlaatsnaam.Value & "'"

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
        
        txtReservering.Value = rst("reserveringsnummer")
        txtReservering.Requery

If rst.RecordCount <= 0 Then
   strResNr = rst(0)
Else
 Set rstBezetting = CurrentDb.OpenRecordset("SELECT * FROM dbo_bezetting")
  For i = 0 To Me.stoelenlijst.ListCount - 1
     If Me.stoelenlijst.Selected(i) Then
         rstBezetting.AddNew
         rstBezetting("datumtijd") = Me.cboVoorstelling.Column(1)
         rstBezetting("reserveringsnummer") = txtReservering.Value
         rstBezetting("stoelnummer") = Me.stoelenlijst.Column(0, i)
         rstBezetting("titel") = Me.cboVoorstelling.Column(0)
         rstBezetting("zaalnaam") = Me.cboVoorstelling.Column(2)
         'etc
         rstBezetting.Update
         
     End If
  Next
  rstBezetting.Close
  Set rstBezetting = Nothing
End If

End Sub

ik wil iedereen bedanken die met met dit probleem heeft geholpen:thumb:
julie zijn geweldig:P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan