tekstveld vergelijken met info uit database

Status
Niet open voor verdere reacties.

heyajohnny

Gebruiker
Lid geworden
29 aug 2007
Berichten
35
Hallo, zoals jullie misschien weten ben ik nog een noob in vba, vandaar deze vraag.

Ik wil uit het Tekstvak BTWnummer kijken of ik niet dezelfde waarde al in de database heb staan. Als het nummer al in de database staat, dan moet er een melding verschijnen, dat het nummer al in de database aanwezig is.Het veld BTWnummer staat in de tabel klanten.

Even een stukje code (dat helemaal fout is, maar ik heb me best erop gedaan :P)

Private Sub BTWnummer_Change()
With Me.BTWnummer
If .Text = SELECT BTWnummer FROM Klanten WHERE BTWnummer = "(.Text)" Then
Fout:
MsgBox "Het BTW nummer is al in gebruik.", vbExclamation, "Bestaande waarde"
End If
End With
End Sub

Alvast bedankt voor de moeite :thumb:
 
De SELECT statement kun je als filter loslaten op een recordset. Als je recordset vervolgens 1 record (meer zou niet moeten kunnen) bevat die aan je filter voldoet, dan weet je dat de naam al voorkomt.
 
In de code voer ik toch een filter uit??

Als BTWnummer.text is gelijk aan de resultaten van de query.... dan error message..

Misschien snap ik je antwoord niet helemaal.:confused:
Maar iig bedankt
 
Het resultaat van een query is een recordset met mogelijk meerdere records. Stel ik filter op de voornaam "J%" dan krijg ik alle voornamen die beginnen met een J.

In jouw geval zou je een recordset krijgen met maximaal 1 record.

Volgens mij moet je een code heb ongeveer als volgt...
Code:
      Dim WorkBase as Database
      Dim WorkRS1 as Recordset
      Dim SQL as String

      Set WorkBase = OpenDataBase(“C:\DBPath\DBFileName.MDB”)

      SQL = "SELECT * FROM Klanten WHERE BTWnummer = '" & Me.BTWnummer.Text & "'"
      Set WorkRS1 = WorkBase.OpenRecordset(SQL)

      If WorkRS1.recordcount = 1 Then
            'Er bestaat al een record met deze naam!
            ...
      Else
            'Deze naam bestaat nog niet, dus ga gewoon verder...
      EndIf

      WorkRS1.Close
      WorkBase.Close
 
Ik ben er bijna.. Ik heb nu het volgende:

Dim WorkBase As Database
Dim WorkRS1 As Recordset
Dim SQL As String

Set WorkBase = OpenDatabase("E:\stage\Backups\Aangepast\Dummy .MDB")

SQL = "SELECT * FROM Klanten WHERE BTWnummer = '" & Me.BTWnummer.Text & "'"
Set WorkRS1 = WorkBase.OpenRecordset(SQL)

If WorkRS1.RecordCount = 1 Then
MsgBox "Dit is een onjuist email-adres of uw standaard email-programma is niet gevonden", vbExclamation, "Fout bij openen hyperlink"
Else
MsgBox WorkRS1.RecordCount, vbExclamation, "Goed"

WorkRS1.Close
WorkBase.Close

Nu haalt hij op(bijv): NL 123 456 786 435
Maar in de database staat hij als: NL123456786435

Hoe krijg ik dat opgelost? Het gesplitste moet 1 geheel worden. Hoe doe ik dat?
Alvast bedankt :thumb:
 
Laatst bewerkt:
Je kan een extra variabele gebruiken waarin geen spaties staan via het Replace commando (vervang alle spaties door lege tekst). En gebruik nu txtNoSpaces in je SQL statement:

Code:
Dim txtNoSpaces as String

txtNoSpaces = Replace(Me.BTWnummer.Text," ","")
SQL = "SELECT * FROM Klanten WHERE BTWnummer = '" & txtNoSpaces & "'"
 
Iemand enig idee hoe ik dit op moet lossen:

Kan Dummy.MDB niet gebruiken. het bestand is al in gebruik. Misschien moet ik iets codematig sluiten ofzo

Als ik dan een macro uitvoer heb ik hier geen last meer van.
 

Bijlagen

  • naamloos.JPG
    naamloos.JPG
    53,5 KB · Weergaven: 43
Laatst bewerkt:
Wanneer (bij welke regel code) krijg je de foutmelding?

Via WhoLockMe kun je kijken welk proces de database bezet houdt; en kun je dat proces beeindigen.
 
Het wordt alleen door MSAccess gebruikt. Als ik een macro uitvoer, precies hetzelfde.
 

Bijlagen

  • naamloos.JPG
    naamloos.JPG
    32,5 KB · Weergaven: 21
Regel foutmelding: Set WorkBase = OpenDatabase("Dummy.MDB")
 
Laatst bewerkt:
En je hebt MS Access ook niet aanstaan?

Verder zou je nog de volgende code op het einde kunnen toevoegen. Misschien dat dat iets uitmaakt? (zou niet mogen, volgens mij)
Code:
   Set WorkRS1 = Nothing
   Set WorkBase = Nothing
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan