Ik heb een probleem:
Op de universiteit organiseer ik een bedrijvenweek (voor de geinteresseerden: www.ebtilburg.nl ). Nu gaan dit jaar de inschrijvingen voor het eerst geheel digitaal. Dit betekent dat er zo'n 600 inschrijvingen binnenkomen op een in php gebouwde site. Deze site heb ik samen met iemand die meer verstand heeft van php gebouwd. Aangezien deze jongen naar het buitenland is gegaan hebben we besloten om het frontend 9waar we de inschrijvingen uit kunnen halen) in Access te bouwen. So far so good.
Het datamodel zit enigzins apart in elkaar. Elk bedrijf heeft een ID (tabel bedrijven). Om de inschrijvingen voor de Individuele gesprekken te registeren worden deze ID's achter elkaar in een string geplakt en dat in een veld in de db weggeschreven.
Dit maakt het onmogelijk om fatsoenlijk queries te draaien over deze gegevens. Waar ik nu mee bezig ben is het opsplitsen van de string in losse getallen (ook een rukkarwei, aangezien alles in 97 staat en daar de functie split() nog niet in zit.
Wat ik nu dus wil, is dat ik al die strings opsplits in losse records, die samen met het deelname id naar een andere tabel (soort koppeltabel) weggeschreven worden (eenmalige actie).
Dit is wat ik aan code heb:
Zoals je ziet een dubbele do while loop, die alle records in de recordset afgaat en dan per record een/meerdere INSERT query(s) draait om zo de bedrijfsid's weg te schrijven.
Deze oplossing is nog niet werkend, is dit een goede oplossing, of kan ik het beter anders fixen?
(datamodel aanpassen gaat helaas niet...)
Op de universiteit organiseer ik een bedrijvenweek (voor de geinteresseerden: www.ebtilburg.nl ). Nu gaan dit jaar de inschrijvingen voor het eerst geheel digitaal. Dit betekent dat er zo'n 600 inschrijvingen binnenkomen op een in php gebouwde site. Deze site heb ik samen met iemand die meer verstand heeft van php gebouwd. Aangezien deze jongen naar het buitenland is gegaan hebben we besloten om het frontend 9waar we de inschrijvingen uit kunnen halen) in Access te bouwen. So far so good.
Het datamodel zit enigzins apart in elkaar. Elk bedrijf heeft een ID (tabel bedrijven). Om de inschrijvingen voor de Individuele gesprekken te registeren worden deze ID's achter elkaar in een string geplakt en dat in een veld in de db weggeschreven.
Dit maakt het onmogelijk om fatsoenlijk queries te draaien over deze gegevens. Waar ik nu mee bezig ben is het opsplitsen van de string in losse getallen (ook een rukkarwei, aangezien alles in 97 staat en daar de functie split() nog niet in zit.
Wat ik nu dus wil, is dat ik al die strings opsplits in losse records, die samen met het deelname id naar een andere tabel (soort koppeltabel) weggeschreven worden (eenmalige actie).
Dit is wat ik aan code heb:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| Dim strOut As String Dim strTotal() As String Dim strBedrijf() As String Dim i As Integer Dim a As Integer Dim RecCount As Integer Dim dbs As Database Set dbs = CurrentDb Dim rst As Recordset Dim qdf As QueryDef Dim strParm As String Dim rstIG As Recordset Dim qdfIG As QueryDef Dim strSQLIG As String Dim strSQLInsert As String Dim strBedrijfIG As String Dim qdfInsertIG As QueryDef strSQLIG = "SELECT id AS ANR, business_lunch AS BEDR FROM Dinsdag" Set qdfIG = dbs.CreateQueryDef("", strSQLIG) Set rstIG = qdf.OpenRecordset(dbOpenSnapshot) strSQLInsert = "[PARAMETERS] strBedrijfIG TEXT; INSERT INTO IG VALUES !ANR, strBedrijfIG" rstIG.MoveLast rstIG.MoveFirst RecCount = rstIG.RecordCount i = 0 a = 0 'code die alle recrds in de recordset afgaat Do While a <= RecCount 'code die binnen de record de IG's in een nieuwe tabel plaatst With rstIG Do While i < 40 And Split(",", !BEDR, i) <> "" strBedrijfIG = Split(",", !BEDR, i) Set qdfInsertIG = dbs.CreateQueryDef("", strSQLInsert) qdfInsertIG.Execute i = i + 1 Loop rstIG.MoveNext Loop End Sub |
Zoals je ziet een dubbele do while loop, die alle records in de recordset afgaat en dan per record een/meerdere INSERT query(s) draait om zo de bedrijfsid's weg te schrijven.
Deze oplossing is nog niet werkend, is dit een goede oplossing, of kan ik het beter anders fixen?
(datamodel aanpassen gaat helaas niet...)