automatisch aanvullen mbhv MS Acces DB

Status
Niet open voor verdere reacties.

Cyrax

Gebruiker
Lid geworden
8 okt 2001
Berichten
228
hoi hoi ...

ik begin nog maar net met het gebruiken van databanken in VB, maar ik heb n vraagje.
(PS. Ik weet niet of dit 100% hetzelfde is als deze thread, maar ik waag het er toch op)

ik werk aan een facturatieprogramma.
mijn programma steunt op een databank die MAIN heeft, en 2 tabellen bevat, 'producten' en 'klanten'.

Ik heb 2 datacontrols, 'dtaKlanten' en 'dtaProducten'

Ik wil het zo hebben dat je gewoon een KLANTCODE in moet voeren in een veld, en dat dan automatisch de rest van de info (naam, adres, email, btw-nummer, ...) ingevuld wordt ...

hoe doe ik dit ?? (idem voor producten, die hebben ook allemaal een code ...)

dank bij voorbaat ...
 
Je bericht te laat gezien. Sorry, morgen weer.

Hallo,

Het feit dat je database, MAIN geheten, uit 2 tabbellen bestaat
wilt niet zeggen dat er 2 Datacontrols benodigd zijn. Weliswaar
kan er per datacontrol slechts één tabel worden benaderd, maar
d.m.v. sql kunt je een koppeling met de andere tabel ook tot
stand brengen.

Als een database meer dan één tabel bevat, dan is het wel vaak
de bedoeling dat deze 2 tabellen met elkaar een relatie hebben.
We hebben het dan over RDBMS. Je zou middels je Klantcode een
koppeling met de andere tabel kunnen maken en zo een één-op-één
relatie tussen tabellen te maken.

Natuurlijk kun je de 2 tabellen los van elkaar zien en dit is wat je ook wilt.

Mvg.

Dennis.

P.S. Zal morgen proberen uit te werken. Maar belofte maakt schulden. Ben dus voorzichtig. Tenzij iemand anders te hulp schiet.
 
ik heb helemaal geen relaties nodig ... de 2 tabellen hebben compleet niets met elkaar te maken hoor, gewoon voor het gemak maar alles in 1 db gestoken ...
 
Hier ben ik weer. Ben net thuis van mijn werk.

De thread die je noemde heeft zeker met je vraagstelling te maken.
Danny heeft een database programma ontwikkeld waarvan de code voor
je programma goed bruikbaar kan zijn. Met name v.w.b. de Invoer,
Opzoeken en Overzicht. Deze opties bevinden zich in Form1 van zijn
programma en worden respectievelijk de volgende Forms aangeroepen:
Form2, Form3 en Form4.

Ik had bijna een voorbeeld programma voor je willen maken, maar
zou het programma bijna identiek (behalve dat je 2 tabellen hebt en de zijne 1)
zijn aan het programma van Danny. Misschien is het beter, dat je Danny
een privé bericht stuurt en aan hem vraagt of je zijn code mag
gebruiken. Niet helemaal ter zake doende, maar hij heeft bijvoorbeeld
ook een veld staan met MEMO als gegevenstype. Dit veld gebruikt hij
voor "Opmerkingen". Zo'n veld kan een omvang 64KB hebben.

Als je je database(MAIN) in Visdata hebt gemaakt, dan weet je wel
hoe verder te handelen welk veld de index KLANTCODE moet hebben.
En evenzo voor de index (bijvoorbeeld) PRODUCTID.

Ik wil het nogmaals benadrukken, dat het programma van Danny voor
jou, met enige aanpassing, zeker datgene is wat je moet hebben.

Succes.

Dennis.
 
Hoi Cyrax,

Als eerste zou ik je eens willen vragen om mijn progje te downloaden en dit eens grondig te bestuderen.

Als je iets niet begrijpt post dat dan, zodat ik het je uit kan leggen... (ik hoop dat ik dat met alles kan, want ik heb ook gedeeltes van internet en van Dennis)

Ik denk dat je probleem dan al voor een gedeelte is opgelost.

Succes !! :thumb:
 

Bijlagen

bedankt allebei, ik ga het zometeen bekijken ...
 
Goed dat je even reageert.

Hallo Danny,

Bedankt voor je reactie ter wille van Cyrax. Het gaat tenslotte om
je eigen gemaakte programma. Je zou dus eerst op de hoogte moeten
worden gebracht. Wanneer ik voor Cyrax een voorbeeld programma zou
gaan schrijven, dan zou mijn programma een spiegelbeeld van je programma
zijn. Althans de kern ervan. Het verschil zou alleen in defintie
v.d. velden zijn.

Mvg,

Dennis.
 
hmm, ik snap hoe het programma van danny in mekaar zit (heel mooi gecodeerd trouwens ...).

Maar ik zit dan nog met een probleem, (zoals gezegd, men eerste keer met databanken).

Ik ga deze vraag beperken tot 1 tabel, aangezien de andere toch ongeveer hetzelfde is.

in 1 tabel (producten) heb ik de volgende velden:
- ID (autonummering) -> product ID
- Omschrijving (memo) -> spreekt voor zich
- BTW (numeriek) -> standaard BTW percentage
- EHprijs (numeriek) -> eenheidsprijs vh product

Op men form heb ik de velden:
- txtCode
- txtOmschr
- txtAantal (niet van belang hier, gewoon voor de volledigheid)
- txtBTW
- txtEHprijs

Eveneens op men form heb ik een cmdButton, cmdOk genaamd.

Ik wil hebben dat als ik in het veld txtCode een code ingeef, en dan op de OK-knop duw, de rest van de velden ingevuld worden.
Ik begrijp hoe ik de databank kan doorzoeken in het veld ID, ik begrijp hoe ik kan melden dat er geen velden zijn met die code, ...

maar wat ik NIET begrijp, is hoe ik de rest van de textvlakken (behalve txtAantal) kan laten invullen als er WEL een product is met die ID. ...

ik veronderstel dat het gemakkelijke code is, ... maar hoe ??? :confused:

help :8-0: :'D:
 
Bedankt voor het compliment !!

Misschien is het iets makkelijker als je je programmaatje gewoon even als bijlage toevoegd...
Scheelt jou type werk en mij programmeerwerk ;)
 
ik denk niet dat ik het programma ga bijvoegen ... omdat het nogal een groot geheel is, en ik eigenlijk maar een klein deeltje moet hebben. tis trouwens deel van men eindwerk op school, en ik zou graag dat beetje extra doen (door met databanken te werken).

Is het goed als ik een simpele layout maak met hetgeen nodig is, en een klein databankje, en dat je dat aanpast ???

groetjes
 
hier is 'ie dan ...

enkel code kan je invullen, dan moet je op OP drukken, en de rest wordt ingevuld ... :)
 

Bijlagen

  • vb.zip
    vb.zip
    10,4 KB · Weergaven: 18
Hij doet 't (bij mij tenminste) !!

Het is volgens mij een beetje een omstreden manier, maar het werkt...
Ik weet alleen niet of ie veel vertraagt als er >100 codes inkomen...

Kijk maar of je er wat mee kunt ! :thumb:
 

Bijlagen

goh, hij doet et ...

Alleszinds MEGA VRIENDELIJK BEDANKT :thumb:
en ik snap de redenering ook compleet ...

misschien nog een klein detail ...
als ik nu het prog opstart, staan er al velden ingevuld ... kan dit verholpen worden ??
 
Voeg bij Private Sub Form_Initialize()

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
 
En misschien is dit nog een leuke aanvulling op je progje: Voeg dit toe onder Private Sub Command1_Click()
If Text1.Text <> List1.Text Then
MsgBox "Deze code bestaat niet !", vbInformation, "Fout!"
End If

Zie maar wat je ermee doet !!

Veel succes !! :thumb:
 
Geplaatst door the_dannyboy
Voeg bij Private Sub Form_Initialize()

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""

verdomme, dat ik daar niet aan gedacht heb ... STOM STOM STOM ...

anyways,

bedankt voor alles :thumb:
 
Ik kom zoals altijd weer te laat hé!

Hallo Cyrax en Danny,

Was weer te laat met mijn reactie. Ik zie, dat Danny de oplossing
al gegeven heeft.

Evenwel zal ik mijn uitleg toch hier deponeren. Heb Cyrax z'n
voorbeeld nog niet gedownload.

Allereerst jouw citaat:
"Ik wil hebben dat als ik in het veld txtCode een code ingeef,
en dan op de OK-knop duw, de rest van de velden ingevuld worden."

Het is beter een aparte textbox te gebruiken, die niet met je
Datacontrol/Database verbonden is, om als zoek string (ID) te laten
dienen. Dus nog een aparte textbox op je Form plaatsen. Noemt het
bijvoorbeeld txtZoekCode.

Ga als volt te werk:

Verbind de 4 textvelden (txtAantal was niet van belang zei je, vandaar 4)
met je Datacontol en gebruik het eigenschap Datafield van deze 4 textvelden.
Dit alles voer je in het eigenschappenvenster v.d. desbetreffende textvelden.

1) Klik op de textbox txtCode. Zet Datasource op Data1 en Datafield op ID
2) Klik op de textbox txtOmschr. Zet Datasource op Data1 en Datafield op Omschrijving
3) Klik op de textbox txtBTW. Zet Datasource op Data1 en Datafield op BTW
4) Klik op de textbox txtEHprijs. Zet Datasource op Data1 en Datafield op EHprijs

5) Onderstaande code is voor de knop cmdOK bedoeld:

Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    'Let op! Mogelijkerwijs zal "Text1.Text" bij jou anders
    'heten. Text1.Text dient hier als een zoekstring.
    If (KeyAscii = 13) And (Text1.Text <> "") Then
        Text1.Text = Trim(Text1.Text)
        Text1.Text = Val(Text1.Text)
        Data1.Refresh
        Data1.Recordset.MoveFirst
        Data1.Recordset.Index = "ID"
        Data1.Recordset.Seek "=", Trim(Text1.Text)
        If Data1.Recordset.NoMatch Then
            MsgBox Text1.Text & "  niet gevonden!"
            Else
            MsgBox Text1.Text & "  gevonden!"
        End If
    End If
End Sub

6) runt het programma.

Opmerking:

Als je het programma runt, dan zie je dat de 4 textvelden het eerste
record van je database representeren. Wil je bv. dat de weergave v.d. 4
tekstvelden met het ID nummer 6 overeenkomt, dan voer je in het
(apart toegevoegde textveld) textveld een 6 en druk je vervolgens op
de Enter-toets.

Groet.

Dennis.

P.S. Ik zie dat je nog een vraag hebt:

Oplossing:

Maak de eigenschappen Datasource en Datafield v.d. 4 tekstvelden leeg. Dus,

1) Klik op de textbox txtCode en verwijder Data1 Van Datasource en verwijder ID van Datafield.
2) Klik op de textbox txtOmschr en verwijder Data1 Van Datasource en verwijder Omschrijving van Datafield.

enz........

De code voor de knop cmdOK vervang je met onderstaande code:
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    'Let op! Mogelijkerwijs zal "Text1.Text" bij jou anders
    'heten. Text1.Text dient hier als een zoekstring.
    If (KeyAscii = 13) And (Text1.Text <> "") Then
        Text1.Text = Trim(Text1.Text)
        Text1.Text = Val(Text1.Text)
        Data1.Refresh
        Data1.Recordset.MoveFirst
        Data1.Recordset.Index = "ID"
        Data1.Recordset.Seek "=", Trim(Text1.Text)
        If Data1.Recordset.NoMatch Then
            MsgBox Text1.Text & "  niet gevonden!"
            Else
            Text2.Text = Data1.Recordset.Fields("ID")
            Text3.Text = Data1.Recordset.Fields("Omschrijving")
            Text4.Text = Data1.Recordset.Fields("BTW")
            Text5.Text = Data1.Recordset.Fields("EHprijs")
            MsgBox Text1.Text & "  gevonden!"
        End If
    End If
End Sub
Is dit niet wat je bedoelt, omdat je via de 4 tekstvelden ook je database
wilt gaan manipuleren, dan moet je een aparte invoerscherm gaan gebruiken.
Vergeet niet, dat je met het DBgrid control veel kunt doen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan