2 records tot 1 samenvoegen

Status
Niet open voor verdere reacties.

yeppie

Gebruiker
Lid geworden
21 nov 2004
Berichten
27
Wie kan mij vertellen hoe ik twee records uit de tabel kan samenvoegen tot 1 record. Zijn hier VBA instructies voor of andere mogelikheden?
 
Hiervoor zul je toch echt wat meer informatie moeten geven.
Hoe ziet je tabel er precies uit?
Hoe wil je de records samenvoegen?
 
meer info

Korte toelichting: Probleem is ontstaan doordat ik op een formulier zoveel parameters heb (VBA) dat ik een melding krijg (te veel parameters). Dus heb ik het verdeeld over 2 formulieren. Na invullen gegevens beide formulieren is voor ieder formulier een record aangemaakt in de gekoppelde tabel. 1e record bevat gegevens 1e formulier en is voor de rest leeg en 2e record bevat gegevens 2e formulier en is de rest leeg. Ik wil nu dat gegevens van beide formulieren tot 1 record worden beperkt. Kan ik dat achteraf corrigeren of zijn er andere mogelijkheden om dit direct goed aan te pakken?
 
Maak je formulieren unbound (niet gekoppeld aan een tabel of record) en verwerk de gegevens op de formulieren na het invullen van de formulieren middels een stukje VBA code.
 
Tipje van de sluier

Oke, tot zo ver begrijp ik dit, maar ik ben niet helemaal thuis in VBA. Kun je in het kort iets zeggen over de instructies en de manier waarop ik dit het beste zou kunnen aanpakken?
Alvast bedankt voor je tips.



Geplaatst door Bartuls
Maak je formulieren unbound (niet gekoppeld aan een tabel of record) en verwerk de gegevens op de formulieren na het invullen van de formulieren middels een stukje VBA code.
 
Twee formulieren frm1 en frm2 met daarop de de ingevulde velden.
Op het tweede formulier een knopje SlaOp.
Onder dit knopje de code.

Om gegevens toe te voegen moet je een SQL INSERT statement gaan samenstellen en dat uitvoeren.

Dat doe je met code die er ongeveer als volgt uit zal moeten zien:

dim strSQL as String
dim db as Database

strSQL = ""
strSQL = strSQL & "INSERT INTO tblJouwTabel " & vbCrLF
strSQL = strSQL & "FIELDS(fldVeld1, fldVeld2, fldVeld3, ....)" & vbCrLf
strSQL = strSQL & "VALUES("
strSQL = strSQL & cstr(forms![frm1]![txtVeld1] & ", " & vbCrLf
strSQL = strSQL & cstr(forms![frm1]![txtVeld2] & ", " & vbCrLf
strSQL = strSQL & cstr(forms![frm2]![txtVeld3] & ", " & vbCrLf
.......
strSQL = strSQL & ")"

set db = currentdb()

docmd.setwarnings false
db.execute strSQL, dbFailOnError
docmd.setwarnings true

set db = nothing
 
Ik ga er mee aan de slag, ik kom er nog op terug. Tot zo ver bedankt!

Geplaatst door Bartuls
Twee formulieren frm1 en frm2 met daarop de de ingevulde velden.
Op het tweede formulier een knopje SlaOp.
Onder dit knopje de code.

Om gegevens toe te voegen moet je een SQL INSERT statement gaan samenstellen en dat uitvoeren.

Dat doe je met code die er ongeveer als volgt uit zal moeten zien:

dim strSQL as String
dim db as Database

strSQL = ""
strSQL = strSQL & "INSERT INTO tblJouwTabel " & vbCrLF
strSQL = strSQL & "FIELDS(fldVeld1, fldVeld2, fldVeld3, ....)" & vbCrLf
strSQL = strSQL & "VALUES("
strSQL = strSQL & cstr(forms![frm1]![txtVeld1] & ", " & vbCrLf
strSQL = strSQL & cstr(forms![frm1]![txtVeld2] & ", " & vbCrLf
strSQL = strSQL & cstr(forms![frm2]![txtVeld3] & ", " & vbCrLf
.......
strSQL = strSQL & ")"

set db = currentdb()

docmd.setwarnings false
db.execute strSQL, dbFailOnError
docmd.setwarnings true

set db = nothing
 
Kom er niet uit

kan binnen access (VBA) niet de opdracht geven:
DIM db as Database, het type database is geen gedefinieerd type.
Hoe kan ik dit oplossen?
 
Moet je even de Microsoft DAO Object library aanzetten (de hoogste versie die je vind).
Dat doe je door een module te openen, kies in menu extra optie Verwijzingen en zoek dan de betreffende library op en zet er een vinkje voor.
 
Om met de tijd mee te gaan zou ik gebruik maken van ADO. DAO zal wellicht in de toekomst niet meer meegeleverd worden. In het lijstje met referenties (Extra --> Referenties) heet ADO "ActiveX Data Objects".

code wordt dan:
Code:
dim cnn as ADODB.Connection 

Set cnn = currentproject.connection
strSQL = "" 
strSQL = strSQL & "INSERT INTO tblJouwTabel " & vbCrLF 
strSQL = strSQL & "FIELDS(fldVeld1, fldVeld2, fldVeld3, ....)" & vbCrLf 
strSQL = strSQL & "VALUES(" 
strSQL = strSQL & cstr(forms![frm1]![txtVeld1] & ", " & vbCrLf 
strSQL = strSQL & cstr(forms![frm1]![txtVeld2] & ", " & vbCrLf 
strSQL = strSQL & cstr(forms![frm2]![txtVeld3] & ", " & vbCrLf 
....... 
strSQL = strSQL & ")" 


docmd.setwarnings false 
cnn.execute strSQL
docmd.setwarnings true 

set cnn = nothing


Grtz,
 
Mee eens.
Alleen is niet vermeld met welke versie van access en met welk besturings systeem gewerkt wordt en dan is DAO een veiliger keuze dan ADO.

Bart
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan