06-02-2018, 01:56 PM
Het klopt dat de bidprent gegevens van Nistelvorst
vanuit Adlib naar ZCBS een-op-een zijn overgehaald
via een 'standaard' Perl-scriptje.
Ook de JJJJ-MM-DD uit Adlib zijn in hetzelfde formaat
JJJJ-MM-DD geplaatst in ZCBS.
Bij de conversie is dus niets misgegaan.
De config variabele $DATERING heeft alleen te maken
met welke invoervelden op invoerformulier worden getoond.
Nistelvorst gebruikt de velden 08 (Geboren op) en
22 (Overleden op).
Via het hulpprogramma zoekvervang.exe is het probleem
niet op te lossen.
Met Excel kunnen er problemen ontstaan met voorloopnullen,
door Microsoft verminkte datums in velden, extra
toegevoegde quotes, etcetc.
Echter met een simpel Perl-scriptje is het wel eenvoudig
op te lossen. Mogelijk zijn er Perl-gebruikers die Nistelvorst
willen helpen, anders geef mij even een seintje dan los ik het op.
Wat er moet gebeuren:
1. Voer een MERGE uit waardoor je alleen een masterdatabase
hebt.
2. Stuur die naar iemand met Perl op zijn/haar PC (bewaar
zelf wel goed een back-up).
3. Diegene met Perl op zijn/haar PC/laptop draait onderstaand Perl-scriptje.
4. Daarna wordt via de uiterst handige 'Bestand-Vergelijk_inhoud'
optie van Total Commander de input met de output vergeleken
(een fout maken is menselijk...).
5. Stuur weer terug naar Nistelvorst die het op de
webserver plaatst.
En het (standaard) Perl-scriptje (iemand met wat (oude)
programmeerkennis moet het m.i. tamelijk gemakkelijk kunnen
begrijpen):
############################
open (INP, "bidprent.txt");
@ALL = <INP>;
close(INP);
foreach $record (@ALL) {
@veld = split(/\t/, $record);
next if ($veld[2] !~ /\d+/); ## recordnummer?
$veld[8] = "$3-$2-$1" if ($veld[8] =~ /(\d{4})-(\d{2})-(\d{2})/);
$veld[22] = "$3-$2-$1" if ($veld[22] =~ /(\d{4})-(\d{2})-(\d{2})/);
$record = join ("\t", @veld);
}
open (OUT, ">bidprent2.txt");
print OUT @ALL;
close(OUT);
############################
Simpel?
De reden van tussen haakje van bijvoorbeeld jaar: (\d{4})
is dat de treffer wordt opgeslagen in systeemvariabele $1 (etc).
Toch handig dat de ZCBS-database een Ascii-bestand is...
Als er toch wat toelichting gewenst is, dan hoor ik het wel.
Ook als ik het zelf even moet doen.
Gerard
vanuit Adlib naar ZCBS een-op-een zijn overgehaald
via een 'standaard' Perl-scriptje.
Ook de JJJJ-MM-DD uit Adlib zijn in hetzelfde formaat
JJJJ-MM-DD geplaatst in ZCBS.
Bij de conversie is dus niets misgegaan.
De config variabele $DATERING heeft alleen te maken
met welke invoervelden op invoerformulier worden getoond.
Nistelvorst gebruikt de velden 08 (Geboren op) en
22 (Overleden op).
Via het hulpprogramma zoekvervang.exe is het probleem
niet op te lossen.
Met Excel kunnen er problemen ontstaan met voorloopnullen,
door Microsoft verminkte datums in velden, extra
toegevoegde quotes, etcetc.
Echter met een simpel Perl-scriptje is het wel eenvoudig
op te lossen. Mogelijk zijn er Perl-gebruikers die Nistelvorst
willen helpen, anders geef mij even een seintje dan los ik het op.
Wat er moet gebeuren:
1. Voer een MERGE uit waardoor je alleen een masterdatabase
hebt.
2. Stuur die naar iemand met Perl op zijn/haar PC (bewaar
zelf wel goed een back-up).
3. Diegene met Perl op zijn/haar PC/laptop draait onderstaand Perl-scriptje.
4. Daarna wordt via de uiterst handige 'Bestand-Vergelijk_inhoud'
optie van Total Commander de input met de output vergeleken
(een fout maken is menselijk...).
5. Stuur weer terug naar Nistelvorst die het op de
webserver plaatst.
En het (standaard) Perl-scriptje (iemand met wat (oude)
programmeerkennis moet het m.i. tamelijk gemakkelijk kunnen
begrijpen):
############################
open (INP, "bidprent.txt");
@ALL = <INP>;
close(INP);
foreach $record (@ALL) {
@veld = split(/\t/, $record);
next if ($veld[2] !~ /\d+/); ## recordnummer?
$veld[8] = "$3-$2-$1" if ($veld[8] =~ /(\d{4})-(\d{2})-(\d{2})/);
$veld[22] = "$3-$2-$1" if ($veld[22] =~ /(\d{4})-(\d{2})-(\d{2})/);
$record = join ("\t", @veld);
}
open (OUT, ">bidprent2.txt");
print OUT @ALL;
close(OUT);
############################
Simpel?
De reden van tussen haakje van bijvoorbeeld jaar: (\d{4})
is dat de treffer wordt opgeslagen in systeemvariabele $1 (etc).
Toch handig dat de ZCBS-database een Ascii-bestand is...
Als er toch wat toelichting gewenst is, dan hoor ik het wel.
Ook als ik het zelf even moet doen.
Gerard

