Als ik een record verwijder uit ons adressenbestand wordt het record wat via de LEFT OUTER JOIN gekoppeld is ook verwijderd....waaarom? Misschien is het zo ontworpen maar ik vind het iig niet logisch....
Wat heb ik gedaan:
Ik heb 2 tabellen in een (oud) .MDB bestand. Er zit een join tussen die 2 tabellen. De ene bevat NAW gegevens de andere de aanhef gegevens en deze zijn via ID’s aan elkaar gekoppeld.
Ik praat met mn tabellen via SQL. Het is een outer join omdat nog niet voor alle adressen een aanhef is gekozen in de tabel en dan krijg je niet alle records terug als je een inner join gebruikt.
Ik gebruik deze connectie om met de tabellen te praten:
Ik open een recordset (rsAdres) mbv van dit sql commando:
Vervolgens open ik een recordset met het vogende commando:
(cmd is een samengestelde string waarin o.a. de bovenstaande sqlstatement voorkomt en hoe e.e.a. gesorteerd moet worden)
Ik heb al geprobeerd om een computed collumn in het statement toe te voegen maar dit geeft een foutmelding. Ik heb het gevoel dat ado dat niet snapt:
Nu kan ik natuurlijk wel een tweede parelelle recordset aanmaken welke de join niet bevat en hier dan de delete op loslaten maar dat vind ik eigenlijk een k*t oplossing. Het moet toch wel netter kunnen?
Wat doe ik fout?
Wat heb ik gedaan:
Ik heb 2 tabellen in een (oud) .MDB bestand. Er zit een join tussen die 2 tabellen. De ene bevat NAW gegevens de andere de aanhef gegevens en deze zijn via ID’s aan elkaar gekoppeld.
Ik praat met mn tabellen via SQL. Het is een outer join omdat nog niet voor alle adressen een aanhef is gekozen in de tabel en dan krijg je niet alle records terug als je een inner join gebruikt.
Ik gebruik deze connectie om met de tabellen te praten:
code:
1
| "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\server-1\AdressenBestand\adressen.mdb;Mode=Read|Write" |
Ik open een recordset (rsAdres) mbv van dit sql commando:
code:
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
| SQLStatement = "SELECT A.ID as AdresID," _
& "A.Bedrijf," _
& "A.Voornaam," _
& "A.Achternaam," _
& "A.Postadres," _
& "A.Postcode," _
& "A.Plaats," _
& "A.Telefoon," _
& "A.Fax," _
& "A.Kenmerk," _
& "A.Mailing," _
& "A.Gewijzigd," _
& "A.Mobiel," _
& "A.SignAsJan," _
& "A.Voorvoegsel," _
& "A.Afdeling," _
& "A.AddTelToCentrale," _
& "A.AddGSMToCentrale," _
& "A.email," _
& "A.OpeningMiddag," _
& "A.OpeningAvond," _
& "S.Aanhef as Aanhef, " _
& "A.Aanhef as AanhefID " _
& "FROM Adressen A " _
& "LEFT OUTER JOIN Aanhef S On A.Aanhef = S.ID " |
Vervolgens open ik een recordset met het vogende commando:
(cmd is een samengestelde string waarin o.a. de bovenstaande sqlstatement voorkomt en hoe e.e.a. gesorteerd moet worden)
code:
1
2
3
4
5
6
| With rsAdres
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmd <================= sql commado
End With |
Ik heb al geprobeerd om een computed collumn in het statement toe te voegen maar dit geeft een foutmelding. Ik heb het gevoel dat ado dat niet snapt:
code:
1
2
3
4
5
| ... & "A.OpeningAvond," _ & "(Select Aanhef from Aanhef S WHERE S.ID = A.AanhefID) as Aanhef, " _ & "A.Aanhef as AanhefID " _ & "FROM Adressen A " |
Nu kan ik natuurlijk wel een tweede parelelle recordset aanmaken welke de join niet bevat en hier dan de delete op loslaten maar dat vind ik eigenlijk een k*t oplossing. Het moet toch wel netter kunnen?
Wat doe ik fout?
Quod licet lovi, non licet bovi