unique nummering in een query

Status
Niet open voor verdere reacties.

bertkl

Gebruiker
Lid geworden
15 dec 2008
Berichten
9
Probleem

ik heb een tabel met hierin verschillende soorten record.
record 01
record 02
record 04
record 04
record 01
record 02
record 04
record 04
record 04
etc

je krijgt dus altijd een record 1 gevolgd door record 2 en daarna door een aantal record 4.

in record 2 staat een polisnummer en een geboorte datum. (polisnummer met een verschillende geboorte data kan vaker voorkomen. polisnummer in record 2 is dus niet unique.)
in record 4 staat alleen een polisnummer.

record 1 is niet intressant

nu wil ik in record nr 2 de geboorte datum invullen van het record die er boven ligt, want deze tabel is in de juiste volgorde gesorteerd. record 01 tm 4 horen bij elkaar en de volgend paar van 01 tm 04 ook weer.

mijn idee was om via een query tabel maak query een nieuwe tabel te maken met een veld met een nummering die steeds 1 ophoogt. Vervolgens met dlookup (nieuwe query) juiste geboorte data toevoegen.

vraag is dus: hoe moet je in een query een uniqe nummer toevoegen die bij 1 begint, of als iemand een ander idee heeft hoe bovenstaande opgelost moet worden, dan hoor ik dit graag.
 
ik krijg het idee dat je database niet genormaliseerd is. anders krijg je dit soort vreemde kronkels niet.

Je geeft te weinig informatie voor een gericht antwoord. Het ene record is wel gevuld en het andere niet en dan wil je het voorgaande record updaten... ik snap er niet veel van.

Post ander even een sample database.

HTH:D
 
De tabel die ik inlees is een landelijke declaratie standaard.

die als volgt is opgebouwd.

record 01 gegevens verzekeraar
record 02 gegevens verzekerde
record 04 gegevens prestatie1
record 04 gegevens prestatie2
record 04 gegevens prestatie3
record 02 nieuwe verzekerde
record 04 gegevens prestatie1
record 01 nieuwe verzekeraar
record 02
record 04
record 04
etc

Dit heb ik in een gekoppelde tabel staan.

nu staat in record 2 een polisnummer en een geboorte datum. De combinatie van deze 2 is uniek. In record 4 staat alleen een polisnummer. echter moet ik hier ook de geboorte datum bij hebben staan. en die staat in de 02 record die vooraf gaat aan de 04 record.

Dat het landelijk bestand zo is opgebouw vind ik jammer, maar kan ik niet zo veel aan veranderen.

Wat ik uiteindelijk wil is de gegevens die nu onderelkaar staan achter, achter elkaar moeten komen.

gegevens verzekeraar, gegevens verzekerde, gegevens prestatie 1, gegevens prestatie 2, gegevens prestatie 3.

database posten lijkt met niet een goed idee, groot en er zitten vertrouwelijke gegevens in.

heb je hier wat aan.
 
Ja het is een vektis bestand.

onze software maakt een vektisbestand, waar ik weer een txt bestand van maak die ik in access koppel. Inhoud van dit bestand moet gehergroepeerd worden zodat we een naslag funktie hebben.

dus van de records onder elkaar, moeten deze naast elkaar komen.
Dat is opzich geen probleem echter in record 2 staan polisnummers en geboorte data die samen een uniek veld vormen. (er wordt perongeluk wel eens een verkeerde geboorte datum ingevuld).

in record 4 staan geen geboorte data.

als ik nu record 2 en 4 koppel(samenvoeg) dan krijg ik dubbel regels omdat ik dan op polisnummer een relatie moet maken. Echter de polisnummer komt in record 2 vaker voor. namelijk met verschillende geboorte datums.

vandaar dat ik in record 4 de geboorte datum van het record 2 wil hebben staan. en dat is volgens mij mogelijk door alle record 02 en 04 in een (tabelmaak) query te zetten en dan te nummeren van 1 tm ??. dmv dlookup kan ik dan je juiste geboorte datum koppelen.

mag me ook altijd bellen.
 
Een kleine aanwijzing hoe je dit verder kunt verwerken.
Maak a.d.h.v. de Vektis declaratiestandaard hulptabellen voor de verschillende records
(Voorloop, Verzekerde, Prestatie, Sluit). Zet in de hulptabel de naam van het veld, de beginpositie en de lengte. Lees daarna het tekstbestand per regel uit met b.v.
Code:
Dim f
Dim fDecl As String
Dim s As String

f = FreeFile
fDecl = "C:\MijnMap\MijnDeclaratieBestand.txt"
Open fDecl For Input As f
Do Until EOF(f)
    Line Input #f, s
    'soort record left$(s,1)
    'adhv soort record en hulptabel, deze regel uitlezen en in access tabel zetten
Loop
Close #f
 
ik heb de record als apart ingelezen in verschillende tabellen.

ik moet nu echter record 2 en 4 weer samenvoegen, zodat het achterelkaar in een tabel komt te staan. bij het samenvoegen is alleen het polisnummer uniek. echter in record 2 komt deze polisnummer soms 2 x voor omdat er een verkeerde geboorte datum is ingevoerd. Daardoor maak access dubbele record van 2 en 4.

bijvoorbeeld

record 2
polis 1 geb dd 23 11 72
polis 2 geb dd 24 11 72
polis 2 geb dd 25 11 72

record 4
polis 1 verrichting 2
polis 2 verrichting 4
polis 2 verrichting 1

samenvoegen
polis 1 - geb 23 11 72 verrichting 2
polis 2 - geb 24 11 72 verrichting 1 verrichting 4
polis 2 - geb 25 11 72 verrichting 1 verrichting 4

terwijl dit moet zijn
polis 1 - geb 23 11 72 verrichting 2
polis 2 - geb 24 11 72 verrichting 4
polis 2 - geb 25 11 72 verrichting 1

daarom heb ik in record 4 een geboorte datum nodig die in het voorgaande record 2 staat vermeld.

maar toch bedankt het meedenken.
 
Als je alles in 1 tabel wilt samenvoegen is dat vragen om problemen.
Als je inleest zoals ik heb aangegeven, kun je per verzekerde, de prestatierecords inlezen.
In mijn optiek zijn dat dan in ieder geval 2 tabellen (Verzekerden en Prestatatie)
 
Is die "tabel" geen tekstbestand? (Vektis?)
Zo te zien slaat Harry46 de spijker op de kop.

record 1 is niet het eerste record in een tabel maar een record van het type 1 in een tekst bestand. Dan wordt het een stuk duidelijker. Ik heb wel eens zoiets gedaan in een Cleiop03 bestand.

Ik sluit me bij Harry46 aan!

Succes!
 
ik kom er met vba niet uit. Ik ga me hier wel meer op toeleggen wat dit is volgens mij wel de meest nette manier om problemen op te lossen.

momenteel heb ik een koppeling met excel gemaakt. waarbij acces een macro in excel laat uitvoeren en daarna de informatie ophaald. werkt prima.

dank voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan