Toon posts:

[access] met visual basic een record in een tabel wijzigen

Pagina: 1
Acties:
  • 429 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi

Ik ben voor het eerst een database aan het maken en nu wil ik het volgende voor elkaar krijgen:
Er is een "keuzelijst met invoervak" waarin waarden staan die hij uit een kolom van een tabel heeft gehaald. Wanneer je echter een waarde invoert die niet in die kolom voorkomt, stelt hij je een vraag. Hierin vraagt hij of je die waarde toe wilt voegen als een nieuwe record in de tabel, of dat je de huidige waarde wilt vervangen door de nieuwe waarde. Dat eerste is me nu gelukt, maar dat tweede nog niet. Dit alles doe ik overigens via Access in een Visual basic-programmaatje.

Het is me gelukt om de waarden van een record te wijzigen, alleen wijzigt hij stevast dan het eerste record. Dat is uiteraard niet de bedoeling. Ik moet hem dus vertellen welk record gewijzigd moet worden. Het gaat om het record waarin een kolom zit welke LiedID heet, welke dezelfde waarde moet bevatten als de "keuzelijst met invoervak", ook genaamd LiedID.

Op dit moment heb ik het volgende:
code:
1
2
3
4
5
6
7
8
9
        Set Tabel = CurrentDb.OpenRecordset("Lied")
    
        With Tabel
            .MoveFirst
            .Find "LiedID = Me.LiedID"
            ![Lied] = NewData
            .Update
            .Close
        End With

Dat commando "Find" heb ik zelf ontdekt via de help-documentatie in Access. Maar nu geeft hij de foutmelding: "Fout 438 tijdens uitvoering: Deze eigenschap of methode wordt niet ondersteund door dit object"

Wat moet ik doen zodat datgene wat ik wil wel werken gaat? Mijn excuses als dit iets heel simpels eigenlijk is, maar ik heb totaal geen kaas gegeten van access en heb na het doorspitten van de documentatie ervan ook niets gevonden dat mij hiermee helpen kan.

[ Voor 3% gewijzigd door Verwijderd op 22-03-2003 17:25 ]


Verwijderd

Topicstarter
hmm er is toch vast wel iemand die mij hiermee kan helpen? ;)

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Je kunt ook gewoon SQL gebruiken. Het schijnt dat dit nog sneller is ook.

Verwijderd

Topicstarter
Graveheart schreef op 23 March 2003 @ 17:44:
Je kunt ook gewoon SQL gebruiken. Het schijnt dat dit nog sneller is ook.
dat je in SQL ook wijzigingen in een tabel kan aanbrengen begrijp ik, maar in mijn geval moet er eerst een messagebox naar voren komen waarin gevraagt wordt wat er daadwerkelijk gebeuren moet. Hoe combineer je dat met SQL?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je kunt dynamisch een SQL-statement in elkaar knutselen en die vervolgens uitvoeren met bijvoorbeeld
Visual Basic .NET:
1
DoCmd.RunSQL(JouwStatement)

Verder vraag ik me een beetje af hoe jij je tabel geDIM'ed hebt? Wat ik normaal gezien meestal doe is het volgende:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub knoppie_Click()
Dim dat As Database
Dim tbl As Recordset

  Set dat = CurrentDb
  Set tbl = dat.OpenRecordset("WhatEver")

  With tbl
    .Index = "IndexNaam"
    .Seek Me.TextBoxMetZoekwaarde
    
    'De property NoMatch is true als er in het indexveld geen
    'record gevonden is met de waarde van TextBoxMetZoekwaarde
    
    If .NoMatch Then
      MsgBox "Het betreffende record is niet gevonden"
    Else
      .Edit
      .Fields("AanTePassen") = Me.TextBoxMetNieuweWaarde
      .Update
    End If
  End With
  
  tbl.Close
  dat.Close
  
  Set tbl = Nothing
  Set dat = Nothing
End Sub
Als je zorgt voor een reference naar DAO werkt dit heerlijk!

My personal website


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Verwijderd schreef op 23 March 2003 @ 19:02:
[...]


dat je in SQL ook wijzigingen in een tabel kan aanbrengen begrijp ik, maar in mijn geval moet er eerst een messagebox naar voren komen waarin gevraagt wordt wat er daadwerkelijk gebeuren moet. Hoe combineer je dat met SQL?
code:
1
2
3
Dim Query as String
Query = "UPDATE Lied SET " & veld & "=" & waarde & " WHERE LiedID=" & Me.LiedID
DoCmd.RunSQL(Query)


Als ik een beetje begrijp hoe het zit met jou tabel is dit ongeveer wat je zoekt.

[ Voor 8% gewijzigd door Fles op 24-03-2003 15:45 ]


Verwijderd

Topicstarter
Oke, bedankt Graveheart en OZ-Gump, het is me inmiddels gelukt door gebruik te maken van DoCmd.RunSQL(blabla).

Ik zit echter nog wel met een ander probleem, zie [rml][ access] een werkende query die niet werkt?[/rml]
Pagina: 1