Avatar billede koden12 Nybegynder
04. marts 2004 - 23:32 Der er 14 kommentarer og
1 løsning

Databasen som finder sig selv

Databasen som finder sig selv ?
Jeg har tit og ofte lavet databaser og nu da ADO er kommet til Delphi 7
syntes jeg det er blevet sjovt , hen ad vejen.
Der er dog en ting (måske flere) der meget ofte har ærget mig,
Det er at databasen (nu access) skal ligge samme sted, som der hvor man
peger på fra begyndelsen af, når/jeg  man laver programmet.
Det kunne jo være smart hvis brugeren kunne vælge hvor den skulle ligge
eller programmet kunne lægge den det sted som var, det bedste for brugeren.
Det kunne jo fx være en server brugeren gerne ville lægge den på . PÅ det
drev som høre til den bruger fx.
Nu er det jo sådan at man i Delphi 7 , når man strater ADO vælger hvor
access databasen er og findes, og jeg har set de mange linjer som skriver
for at finde ud af det... puh..
Kan det lade sig gøre som jeg omtaler ?
Er det kæmpe vanskeligt ?

Vh
koden12
Avatar billede snowball Novice
05. marts 2004 - 00:14 #1
Du kan jo bare hente stien til databasen i f.eks. en ini fil eller i reg.db'en.

Prøv og hent http://exp.geertsen.dk/dbpath.zip - det er et eksempel på hvordan man henter og gemmer stien til en Access DB i en ini fil.
Avatar billede koden12 Nybegynder
05. marts 2004 - 00:50 #2
Hej snowball
Ja den viker fin ... næsten... da jeg startet din test.. kunne den ikke finde databasen.
Den sti skrev jeg ind.
Men den fandt den forsat ikke.
Så lukkede jeg ned og startet op, NU fandt den databasen.
MEN AK !  da jeg igen lukkede programmet og Delphi helt  ! kom den værste
af alle fejl :
Access viaolation ad adress 03B527B4  (og så videre) en advarsel
boks der bliver ved, og atter ved , med at komme og som IKKE kan stoppes
andet ved at døde windows helt..
Det måtte jeg så gøre.
Måske gjorde jeg noget forkert ?

VH
koden12

PS
den er næsten go : )
Avatar billede janbb Juniormester
05. marts 2004 - 01:13 #3
Ak ja - gamle 'hoveder' som mig begynder at 'associere frit' som det hed i de gamle beskrivelser: Jeg kendte/arbejdede engang sammen med en svensk kvinde, der hed Ingrid.
Hendes mand var nogenlunde velbeslået og ville forære hende en dyr bil.Da katalogerne ankom og Ingrid skulle bestemme sig for udstyret blev det alligevel
manden for meget: "Du må bestemma dig.Du kan ikke få både soltag og air-condition"
havde han sagt.Hvilket jeg heller ikke helt forstod.Og jeg forstår slet ikke hvorfor jeg kommer til at tænke på det i denne her sammenhæng.
Nå spøg tilside.Der gælder da de samme regler for muligheden for at vælge "samme bibliotek som programmet" i ADO som for andre typer databaser.Det kom osse bag på mig første gang, men sådan er det altså og jeg kan endda huske jeg opdagede det i forbindelse med et spm. du havde stillet.Hvis du ikke skriver nogen sti, men bare navnet på databasen fungerer det hvis databasen ligger i samme bibliotek som programmet.Brugeren kan jo 'bare' flytte programmet sammen med Databasen ?.
Men der er sikkert et par 'lag' til i dit spm. :-)Databasen er jo 'sin egen' -
flere programmer kan jo principielt ændre/benytte den.
Avatar billede snowball Novice
05. marts 2004 - 07:35 #4
koden12: Der er klar nok den ikke kunne finde databasen første gang, for den sti der står i ini filen, findes garanteret ikke hos dig, og for at programmet prøver igen, skal man netop først indtaste en anden sti, trykke på "Gem" og genstarte programmet ;)

Mht. den access violation, så ved jeg ikke lige hvordan det lykkedes dig at få sådan en frem, for det kan jeg ikke få den til. Prøv at step'e dig gennem og programmet for at finde ud af på hvilken linie det er det går galt.

Hvis du kan leve med at databasen bare altid skal ligge i samme folder som exe filen af dit program, så kan du som janbb rigtig nok skriver, bare lade være med at skrive den fulde sti til databasen i din ConnectionString.
Avatar billede koden12 Nybegynder
05. marts 2004 - 12:55 #5
Jeg tester den lidt senere igen..
Der skal nok arbejdes noget med den, men den ser OK ud..
Tak også fra JanBB og hans historie ???  : )  nå..
Det kan jo tænkes at det der står i ADO dimmer opretteren ?... (hvad det så end den hedder for noget) , at den henvisning der står der skal slettes først ?
Lige nu er der knald på.
Så vi snakkes..

VH
koden12
Avatar billede janbb Juniormester
05. marts 2004 - 20:52 #6
Meget fixt program snowball: har en version liggende fra et tidl. E-spm, hvor osse 'loadsettings' indgår (måske meget praktisk ? :=)
procedure TForm1.LoadSettings;
var
  IniFile : TIniFile;
begin
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings.ini');
  Edit1.Text := IniFile.ReadString('Main','DBPath',DEF_DBPATH);
  IniFile.Free;
  If FileExists(Edit1.Text) Then Begin
    ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := DEF_CONN1 + Edit1.Text + DEF_CONN2;
    ADOConnection1.Connected := True;
    Label2.Caption := 'Forbundet til databasen';
  End
  Else Begin
    ADOConnection1.Connected := False;
    Label2.Caption := 'Ikke forbundet til databasen';
  End;
end;
Avatar billede snowball Novice
05. marts 2004 - 21:12 #7
janbb: Tja, det skal nok passe jeg også har lavet en sådan funktion før. Den er jo rimelig nyttig :)
Avatar billede koden12 Nybegynder
06. marts 2004 - 00:51 #8
Jeg ville jo være utrolig glad for noget ... forklaring... janbb Hvad er : MAIN DEL_CONN1 og alt det der ?
Kan jeg dele de 60 mellem jer ?  : )


VH
koden12

PS : )

Jeg tjente nogle point her : ) med noget Delphi : )  Reva spørgsmål ..
Avatar billede snowball Novice
06. marts 2004 - 09:47 #9
koden12: Det eksempel janbb har skrevet gør fuldstændig det samme som det du har hentet fra http://exp.geertsen.dk/dbpath.zip. I det eksempel jeg har lavet til dette spørgsmål, hedder DEF_CONN1 bare DB1 og DEF_CONN2 hedder DB2 :)
Avatar billede koden12 Nybegynder
06. marts 2004 - 12:34 #10
Tak snowball og Janbb arbejder med den, nu..
Jeg tror den lykkes.

VH
koden12
Avatar billede koden12 Nybegynder
06. marts 2004 - 13:31 #11
Hej Snowball

Ja, den virker fint men kun hvis der ikke står noget i ini filen i forvejen.
Den virker heller ikke hvis den ligger på en server på et delt drev.
Kan det sidste lade sig gøre på nogen måde, mon ?

VH
koden12
Avatar billede janbb Juniormester
06. marts 2004 - 13:38 #12
Koden12: Forskellen på snowballs 'gamle' version og den nye - består såvidt jeg kan skønne 'bare' i at man ved at tilknytte en 'knap' til loadsettings-proceduren kan redigere i ini-filen og 'teste' løbende uden at skulle genstarte programmet hver gang, men så meget har jeg heller ikke finlæst det.Jeg tænkte bare du måske ikke havde 'set' at der kunne laves en 'knap' til den - lissom open/close.
Avatar billede koden12 Nybegynder
06. marts 2004 - 14:25 #13
Ja nu du siger det, det kan jeg godt se.

VH
koden12
Avatar billede janbb Juniormester
06. marts 2004 - 14:42 #14
Og brug hellere een af dine egne 'små og hyggelige' databaser i stedet for den medfølgende 'testdb', der vistnok muligvis er lidt 'syg' ('listindex out of bounds'
meddeles ved listningsforsøg).Men de andre ting tror jeg nok skal lykkes for dig.
Har desværre ikke selv 'leget' så meget med ini-filer endnu, men det er da rimelig
spændende.Det er godt der er nogle gode eksperter i delphi-afdelingen på E :)
Avatar billede koden12 Nybegynder
06. marts 2004 - 20:16 #15
<<<<
Det er godt der er nogle gode eksperter i delphi-afdelingen på E :)
<<<<<<

Meget enig !

VH
koden12
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Unified Communications specialist til IT-Operations i Cyberdivisionen

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Business Relationship Manager

Rambøll Management Consulting

Senior AI Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operationscenter i Cyberdivisionen Hvidovre