Avatar billede leif Seniormester
05. oktober 2007 - 16:00 Der er 22 kommentarer og
1 løsning

Dublet søgning

Hej,

Jeg har fået en lidt skør opgave.

Kan man i Notes lave en form for Dublet søgning. Fx. tage alle dokumenter hvor at telefonnummer eller adresse er ens ?

Eller endda sige at hvis Efternavns første 5 bogstaver og adressens første 5 bogstaver er ens så skal den komme frem med den ?


Det skal bruges til at søge små 2500 dokumenter igennem for eventuelle dubletter.

Jeg ved godt at man kan ikke altid finde dem alle men man kan måske finde nogen.


Giv dit besyv med.

På forhånd tak

/Leif
Avatar billede jogii Nybegynder
05. oktober 2007 - 16:06 #1
Hvis man kan definere sit "filter" godt nok, så plejer jeg at lave en oversigt, som kategoriserer alle dokumenter efter den "unikke" nøgle. I oversigten tilføjer jeg en total-kolonne med standardværdien 1. Så vil totalen og summen vises tallet 2 eller højere de steder hvor der er flere "unikke". Så ved at skrolle ned at oversigten finder man hurtigt dubletterne

Det er lidt af noget kluns, men det virker, og det er dejligt at se sine data sorteret :-)
Avatar billede leif Seniormester
05. oktober 2007 - 16:12 #2
Det er jo en mulighed, men ville man kunne få den til at sortere på det felt så alle med 1 stod først og dem med 5 stod nederst ?
Avatar billede jogii Nybegynder
05. oktober 2007 - 16:23 #3
Nej desværre, totaler er ikke et felt, men en adhoc-beregnet værdi, som kun findes til visning i oversigten. Du kan evt. exportere data over i et regneark og sortere der.

Men det er ikke særlig besværlig at have totalkolonnen som første kolonne og bare holde øje med den mens man skroller ned.

Det er også muligt at lave nogle agenter der kører sådan en oversigt igennem og markerer dem som er dupletter. men prøv bare med at skrolle først. det tager mindre tid end du tror. Men selvfølgelig er det bedst når man kan rette data med det samme, mens man kontrolerer. Hvis man bare vil have lister til at vise frem, så er det nemmest lige at kværne dem igennem et regneark efterfølgende.
Avatar billede leif Seniormester
05. oktober 2007 - 19:51 #4
Jeg tænker bare med sandsynligvis 2500 dokumenter, så er det da godt nok nogen lister der vil noget, så jeg havde jo nok i tankerne en ja, måske Agent som markerede de dokumenter som det nu er med et felt som jo så er nemt bagefter at sortere og selecte på.
Avatar billede jogii Nybegynder
05. oktober 2007 - 20:23 #5
Så laver du en agent der :
Kører på alle dokumenter i oversigten.
Markerer dokumenter istedetfor at rette dem (angives et sted i højre nedre hjørne af agentdesigneren)
bruger følgende kode i agenten:
_view := "<navnet på denne oversigt>";
_key := @formel der beregner "uniknøglen";
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
@If(@Elements(_look)>1; @True; @False)

Når du så kører denne agent, mens du står i oversigten, så burde den markere de dokumenter som har dubletter. Tryk på <F3> for at flytte fra et markeret dokument til det næste.
Avatar billede leif Seniormester
05. oktober 2007 - 23:29 #6
jogii -> Jeg er næsten med, men alligevel har du tabt mig ! :-(

Jeg er ikke med på denne linie:
@formel der beregner "uniknøglen";
Avatar billede jogii Nybegynder
05. oktober 2007 - 23:42 #7
Det er den samme formel som du bruger for at sortere værdierne i første kolonne i oversigten.
Avatar billede leif Seniormester
07. oktober 2007 - 23:19 #8
Nu bruger i min første felt fx:
Telefonnummer

Så skal den være:
_view := "GroupTelefon";
_key := Telefonnummer;
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
@If(@Elements(_look)>1; @True; @False)


Men den vælger ALLE dokumenter uanset hvad
Avatar billede jogii Nybegynder
07. oktober 2007 - 23:47 #9
Er Telefonnummer type tal eller text?
Hvor meget kender du til DbLookup? har du prøvet at debugge opslag før?
Ændre agenten til at køre på Selected documents(istedtfor all documents in view)

Ændre agenten til

_view := "GroupTelefon";
_key := Telefonnummer;
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
@Prompt([OK]; "Debug"; @Text(_look))

Marker 1 eller 2 dokumenter i oversigten og kør agenten.
Avatar billede leif Seniormester
08. oktober 2007 - 09:28 #10
Den bliver ved med at sætte "SELECT @All" ind i agenten selvom den står til Target: "All selected documents"

Telefonnummer er Text og vælger jeg 2 med samme telefonnummer skriver den 12345678 2 gange (Skal sige 2 gange OK) og vælger jeg 2 med forskellige numre så skriver den hver sit nummer.

Kan du følge mig ?
Avatar billede jogii Nybegynder
08. oktober 2007 - 09:55 #11
Jeps, virker som den skal :-)
Så videre:

_view := "GroupTelefon";
_key := Telefonnummer;
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
_result := @If(@Elements(_look)>1; "Dobbelt"; "Enkelt");
@Prompt([OK]; "Debug"; _result);


Du kan også lige starte med at rette den nuværende agent til så der står
@Prompt([OK]; "Debug"; @Implode(@Text(_look)))

Den der SELECT @ALL kan du kopiere op som første linie. Det er et extra filter, som køres efter agentens hoved-scope (selected eller alle eller alle i oversigten).

Så hvis den har ligget sidst og den har givet et @True tilbage til agenten, så kan den jo godt have forstyrret.
Avatar billede leif Seniormester
08. oktober 2007 - 09:58 #12
Hhvis jeg vælger 1 med 12345678 så skriver den dobbelt, men bibeholder markeringen af dokumentet.
Avatar billede jogii Nybegynder
08. oktober 2007 - 10:23 #13
Hvad sker der når du kører agenten på et dokument som er unikt? 12345678 er dem som ikke er unikke, right?
Avatar billede leif Seniormester
08. oktober 2007 - 10:57 #14
Jeg har 3 dokumenter med 12345678, 2 med 23546789 og 1 med 98765432

Hvis jeg markerer alle og kører agenten så er alle også markeret bagefter !
Avatar billede jogii Nybegynder
08. oktober 2007 - 11:24 #15
Men hvad siger Prompten? Det er vigtigt at vide om koden entydigt kan identificere dubletterne først, før vi tager stilling til markeringen.
Så hvis du kører agenten på 98765432, siger den så dublet eller enkelt?
Avatar billede leif Seniormester
08. oktober 2007 - 13:16 #16
Så siger den Enkelt og vælger jeg 23456789 så siger den dobbelt
Avatar billede jogii Nybegynder
08. oktober 2007 - 14:17 #17
ok, så virker det meste jo.
Prøv så at ændre agenten til

SELECT @All;
_view := "GroupTelefon";
_key := Telefonnummer;
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
_result := @If(@Elements(_look)>1; @True; @False);
_result

og agenten skal markere dokumenter i oversigten (ikke redigere)

Nu burde det virke. Hvis du ændrer agent-scope fra selected til all in view, så kører agenten igennem alle 2500 dokumenter og sætter flueben foran dubletterne. (Ihverttilfælde i teorien :-)
Avatar billede leif Seniormester
08. oktober 2007 - 15:29 #18
Neeeeeeeeeeeeeeeeeeeeeej

Er det nu jeg siger at det virker bedre i teorien end i praksis ?

Den markerer alle dokumenter uanset hvad :-(
Avatar billede jogii Nybegynder
08. oktober 2007 - 16:07 #19
Har du en database med testdata? så send den til ja hos asmucon.dk
Avatar billede leif Seniormester
08. oktober 2007 - 16:51 #20
Sendt
Avatar billede jogii Nybegynder
08. oktober 2007 - 17:38 #21
Det er nok for lang tid siden jeg sidst har lavet Markér-agenter:

_view := "GroupTelefon";
_key := Telefonnummer;
_look := @DbLookup("":"Nocache"; ""; _view; _key; 1);
_result := @If(@Elements(_look)>1; @True; @False);
SELECT _result
Avatar billede leif Seniormester
09. oktober 2007 - 16:20 #22
:-) Så var den der !
Avatar billede leif Seniormester
09. oktober 2007 - 16:20 #23
Takker for den seje kamp med at få det til at virke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows