26. november 2013 - 15:11 Der er 6 kommentarer og
1 løsning

Søgning i database

HEJ,


1;
Jeg har brug for en program-stump, som ved søgning i en database kan finde både  Øster-gade, Øster-port, Øster-søgade, Øster-brogade og alle ØSTER- xxxx gader og --veje.

Jeg ved det kan gøres på følgende måde:

    str = DB..FieldByName('Gadenavn'),Asstring;
    if POS(AnsiLowerCase('Øster'),AnsiLowercase(Str)) > 0 then
      BEGIN
          showMessage ('Fundet .... etc ');
          osv....


      end;
    next....

Men findes der en smartere måde hvor jeg kan bruge Filter-metoden på en raffineret måde.

2: Er der en måde så jeg kan finde gade med ' ' i gadenavnet.

EKS: I Odense findes "Hans Mules gade".

Jeg ville gerne finde den som Hansmulesgade eller kombinationer af denne skrivemåde med spaces. Også via filter metoden. Hvordan?

Kristian
Avatar billede a_nor Nybegynder
26. november 2013 - 15:57 #1
Hej,

du skal nok lave noget sql query, hvor du anvender flg. select:

Select gadenavn from tabelnavn
where gadenavn like 'øster%'    // så får du alle der starter med 'øster'

eller
where gadenavn like '%øster%'  // så får du alle der indeholder 'øster'
26. november 2013 - 16:29 #2
HEj,

Tak for svar.

SQL er desværre udelukket. Jeg bruger TABLES i ptojectet, og skal jeg konvertere til SQL vil det blive meget omfattende. 

Men det lyder som om SQL er vejen frem, og vil lave fremtidige base-projecter som SQL. 

Ved du om der er noget tilsvarende i Tables ?

KR
Avatar billede a_nor Nybegynder
26. november 2013 - 17:08 #3
Hej,
Kan du ikke sende noget kode, hvor du laver forbindelsen til dine TABLES  ?

/ Anders
26. november 2013 - 22:06 #4
Hej,
Nok en gang  TAK.

Jeg bruger ABSTABLE og ABSDatabaser som DBMS . Jeg forsøgte med ADO og MS-løsninger, men fandt ud af det var for usikkert (dengang! ved ikke hvordan det er nu.) Fandt en kode på nettet, som kunne åbne ADO-basen (Access) "uautoriseret", så var den base uaktuel, fordi jeg arbejder med medicinske data (CPR-numre, diagnoser, sygdomshistorier (anamnese) mv.) Har til dato ikke fundet nogen på ABSbase-løsningen.

Men her er (lidt af) koden:


  Curdir := ExtractFilePath(Application.ExeName);

//  PageControl1.ActivePage := PageControl1.Pages[0];

  AbsDatabase1.Close;
  AbsTable1.Close;
  AbsDatabase1.DatabaseFileName := CurDir + 'Data2009.abs';
  AbsDatabase1.DatabaseName := 'AbsDataBase1';
  AbsDatabase1.Password := 'password';  // krypteret
  AbsDatabase1.Open;
  AbsTable1.DatabaseName := 'AbsDataBase1';
  AbsTable1.Tablename := 'Postbase';
  AbsTable1.ReadOnly := False;
  AbsTable1.Open;

PS: det er CTL'C'et direkte fra koden ind i en text-editor hvor jeg har "smukkeseret" det lidt. det er muligt der mangler en ping  (= "'" ) hist og her. Det gør der ikke i orginal - koden.

KR
Avatar billede a_nor Nybegynder
26. november 2013 - 22:40 #5
Hej igen,

Det ser ud til at du bruger ABSdatabase, som beskrevet her:
http://www.componentace.com/absolute_database_features.htm

Hvis det er tilfældet har du også adgang til SQL support, med 'select' og her anvende 'like' operatoren.

Hvad der stilles til rådighed af componenter, og hvordan de anvendes ved du nok bedst selv.

mvh.  Anders
26. november 2013 - 23:51 #6
HEj,

I dit første indlæg gav du mig en ide, som jeg har prøvet at arbejde lidt videre med. nemlig at prøve at konvertere eks. postbasen fra en Table til en SQL. (lidt primitivt sagt da begge reelt er TABLES- men jeg tror du forstår hvad jeg mener).

Min erfaring var = 0 omkring SQL, så det gik galt mange gange. Men efterhånden må jeg aligevel have fundet en af de vises sten, for det lykkedes mig at oprette en SQL-table og putte data i den. Da jeg skulle "accesse" denne table fik jeg den ene fejl efter den anden (nu - ved jeg hvorfor!), (manglende  ';' , forkert stavet mv), men det her har givet mig blod på tanden, så postbasen vil blive skabt som SQL og efterhånden vil de andre baser konverteres til SQL med tilhørende kodeændringer. 

Så du har faktisk ret til point. (Egentlig ikke for aktiv hjælp men for give mig en ide, som vil være særdeles anvendlig. !

Så drop et svar - så får du dine point en gang i løbet af onsdag / eller torsdag- .

KR
11. december 2013 - 09:32 #7
Lukker spm.

Protester hvis nogen føler sig forbigået. 

KR
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
Kurser inden for grundlæggende programmering

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