|
| Databaser og program Fra : leWorm |
Dato : 08-05-04 19:39 |
|
Nu har jeg fået lavet mit program, med 5 access db tilknyttet.
nu er så bare mit problem, når jeg laver det om til en exe fil, og flytter
exe filen og db'erne, så melder programmet om fejl,
at den ikk kan finde de angivende db'er
Nu er mit spørgsmål så hvordan skal man i vb fortælle den at fx db'er ligger
i mappe som programmet, så man kan flytte mappen hvorhen man vil..
og er er nogen der kender til et installationsprogram, så man kan lave en
instalationsfil..
| |
BSJ (09-05-2004)
| Kommentar Fra : BSJ |
Dato : 09-05-04 07:01 |
|
"leWorm" <orm@leWorm.org> skrev i en meddelelse news:c7j9gj$28el$1@news.cybercity.dk...
> Nu har jeg fået lavet mit program, med 5 access db tilknyttet.
>
> nu er så bare mit problem, når jeg laver det om til en exe fil, og flytter
> exe filen og db'erne, så melder programmet om fejl,
> at den ikk kan finde de angivende db'er
>
> Nu er mit spørgsmål så hvordan skal man i vb fortælle den at fx db'er ligger
> i mappe som programmet, så man kan flytte mappen hvorhen man vil..
>
>
> og er er nogen der kender til et installationsprogram, så man kan lave en
> instalationsfil..
>
>
Den nemme løsning:
Stien til DB'en har du angivet i datakontollens "databasename".
Samme sti skal anvendes på den/de maskiner du vil installere på, dvs. under installationen bliver du nødt til
at installere i en mappestruktur der er magen til den som du har udviklet på.
anden mulighed:
Du laver en variabel der indeholder stien til databasen.
Variablen indlæses til (og fra) registreringsdatabasen ved hjælp af:
Savesetting
og
Getsetting
samtidig tilføjer du en form hvori der er mulighed for at navigere hen til DB'en f.eks. v.h.a. en
"commondialog" kontrol.
commondialog1.showopen
hvis du vælger ikke at bruge commondialog - så må du bygge en "openfile" selv, med kontrollerne "drivelist",
"dirlist" og "filelist"
anbring en label eller textboks og gem hele stien i denne.
mvh
Bjarne
| |
Steen Gellett (22-05-2004)
| Kommentar Fra : Steen Gellett |
Dato : 22-05-04 12:57 |
|
"BSJ" <bjarne.sigDETTESKALFJERNES@get2net.dk> skrev i en meddelelse
news:409dc896$0$23150$ba624c82@nntp05.dk.telia.net...
>
> "leWorm" <orm@leWorm.org> skrev i en meddelelse
news:c7j9gj$28el$1@news.cybercity.dk...
> > Nu har jeg fået lavet mit program, med 5 access db tilknyttet.
> >
> > nu er så bare mit problem, når jeg laver det om til en exe fil, og
flytter
> > exe filen og db'erne, så melder programmet om fejl,
> > at den ikk kan finde de angivende db'er
> >
> > Nu er mit spørgsmål så hvordan skal man i vb fortælle den at fx db'er
ligger
> > i mappe som programmet, så man kan flytte mappen hvorhen man vil..
> >
> >
> > og er er nogen der kender til et installationsprogram, så man kan lave
en
> > instalationsfil..
> >
> >
> Den nemme løsning:
> Stien til DB'en har du angivet i datakontollens "databasename".
> Samme sti skal anvendes på den/de maskiner du vil installere på, dvs.
under installationen bliver du nødt til
> at installere i en mappestruktur der er magen til den som du har udviklet
på.
>
> anden mulighed:
> Du laver en variabel der indeholder stien til databasen.
> Variablen indlæses til (og fra) registreringsdatabasen ved hjælp af:
> Savesetting
> og
> Getsetting
> samtidig tilføjer du en form hvori der er mulighed for at navigere hen til
DB'en f.eks. v.h.a. en
> "commondialog" kontrol.
> commondialog1.showopen
> hvis du vælger ikke at bruge commondialog - så må du bygge en "openfile"
selv, med kontrollerne "drivelist",
> "dirlist" og "filelist"
> anbring en label eller textboks og gem hele stien i denne.
>
> mvh
> Bjarne
Det var dog en vanvittig måde at gøre det på.................
Prøv dette istedet !!
I din Form_Load skal du bare sætte din databasesøgevej til App.Path
Eks.
Data1.DatabaseName = App.Path & "\xxxxxxxxxx.mdb"
På denne måde skal .exe filen og mdb filen bare følges ad...så virker det
uanset hvilket install dir brugeren vælger !!!
Husk lige at slette den i dit designvindue så den ikke følger den søgevej
som alligevel ikke eksistrere på den "anden" maskine !!
>
>
| |
Tomas Christiansen (22-05-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 22-05-04 23:59 |
|
Steen Gellett skrev:
> Data1.DatabaseName = App.Path & "\xxxxxxxxxx.mdb"
>
> På denne måde skal .exe filen og mdb filen bare følges ad...så virker det
> uanset hvilket install dir brugeren vælger !!!
Såe? Hvad med C:\ ?
-------
Tomas
| |
Reidar Kind (23-05-2004)
| Kommentar Fra : Reidar Kind |
Dato : 23-05-04 01:33 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> wrote in message
news:c8olpb$2k22$1@news.cybercity.dk...
> Steen Gellett skrev:
> > Data1.DatabaseName = App.Path & "\xxxxxxxxxx.mdb"
> >
> > På denne måde skal .exe filen og mdb filen bare følges ad...så virker
det
> > uanset hvilket install dir brugeren vælger !!!
>
> Såe? Hvad med C:\ ?
Sikker på at det finnes en C:\ ??
Et annet spørsmål er om brukeren i det hele tatt har skrive/lese rettigheter
til app.path .. menmen..
-rk
| |
Steen Gellett (23-05-2004)
| Kommentar Fra : Steen Gellett |
Dato : 23-05-04 08:43 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:c8olpb$2k22$1@news.cybercity.dk...
> Steen Gellett skrev:
> > Data1.DatabaseName = App.Path & "\xxxxxxxxxx.mdb"
> >
> > På denne måde skal .exe filen og mdb filen bare følges ad...så virker
det
> > uanset hvilket install dir brugeren vælger !!!
>
> Såe? Hvad med C:\ ?
>
Nu skriver jeg install DIR.........bemærk DIR...........C:\ er IKKE et dir
Læs lige svar inden du spiller smart !!
> -------
> Tomas
>
| |
Tomas Christiansen (23-05-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 23-05-04 22:10 |
|
Steen Gellett skrev:
> Nu skriver jeg install DIR.........bemærk DIR...........C:\ er IKKE et dir
>
> Læs lige svar inden du spiller smart !!
Okay. Nu kan "DIR" jo stå for mange ting, men hvis det står for det, som vi
andre kalder directory/biblioteket, så må jeg oplyse dig at roden af et drev
(det behøver jo ikke ligefrem være C-drevet, men kunne så udmærket være et
netværksdrev som f.eks. P) rent faktisk er et directory/biblioteket. Nærmere
bestemt "roden" eller "rod-biblioteket". Alle andre biblioteker kaldes så
kaldes under-biblioteker.
....og lige en ting: Hvis der er nogen som spiller smart, så må det da vist
være dig, når du kommer med en ukomplet løsning uden at fortælle om dens
svagheder. Endda selvom emnet omkring brugen af App.Path og det at man ikke
kan forvente noget om hvorvidt der er backslash i slutningen af App.Path har
været oppe i gruppen flere gange. En lille note din side ville have været
nok!
Må jeg i stedet foreslå noget i retning af:
Data1.DatabaseName = PathConcat(App.Path, "xxxxxxxxxx.mdb")
Function PathConcat(ByVal Path1 As String, ByVal Path2 As String) As String
PathConcat = Left(Path1, IIf(Right(Path1, 1) = "\", _
Len(Path1) - 1, Len(Path1))) & "\" & _
Mid(Path2, IIf(Left(Path2, 1) = "\", 2, 1))
End Function
Bemærk at der er adskillige mindre kryptiske måder at implementere
"PathConcat" på, men denne implementation er forholdsvis kort.
-------
Tomas
| |
Thomas Bøjstrup Joha~ (25-05-2004)
| Kommentar Fra : Thomas Bøjstrup Joha~ |
Dato : 25-05-04 21:59 |
|
> Må jeg i stedet foreslå noget i retning af:
>
> Data1.DatabaseName = PathConcat(App.Path, "xxxxxxxxxx.mdb")
>
> Function PathConcat(ByVal Path1 As String, ByVal Path2 As String) As
String
> PathConcat = Left(Path1, IIf(Right(Path1, 1) = "\", _
> Len(Path1) - 1, Len(Path1))) & "\" & _
> Mid(Path2, IIf(Left(Path2, 1) = "\", 2, 1))
> End Function
>
hvad med at bruge denne:
filname = Environment.CommandLine & " "
filname = Left(filname, InStr(filname, ".exe ", CompareMethod.Text))
filname = Left(filname, InStrRev(filname, "\"))
Data1.DatabaseName = filname & "xxxxxxxxxx.mdb"
Thomas Bøjstrup Johansen
| |
Thomas Bøjstrup Joha~ (25-05-2004)
| Kommentar Fra : Thomas Bøjstrup Joha~ |
Dato : 25-05-04 22:03 |
|
Prøver lige igen
filname = Environment.CommandLine & " "
filname = Left(filname, InStr(filname, ".exe ", CompareMethod.Text))
filname = Left(filname, InStrRev(filname, "\")) & "xxxxxxxxxx.mdb"
If System.IO.File.Exists(filname) = True Then
Data1.DatabaseName = filname
Else
Console.WriteLine("Error: database file not found")
End If
Thomas Bøjstrup Johansen
| |
Tomas Christiansen (26-05-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 26-05-04 22:51 |
|
Thomas Bøjstrup Johansen skrev:
> filname = Environment.CommandLine & " "
> filname = Left(filname, InStr(filname, ".exe ", CompareMethod.Text))
> filname = Left(filname, InStrRev(filname, "\")) & "xxxxxxxxxx.mdb"
>
> If System.IO.File.Exists(filname) = True Then
> Data1.DatabaseName = filname
> Else
> Console.WriteLine("Error: database file not found")
> End If
Èt af problemerne med din metode er at Environment.CommandLine,
System.IO.File.Exists og Console.WriteLine ikke findes i hverken VB 6.0, VB
5.0 eller tidligere versioner af VB.
Et andet problem med din metode er at du forventer at der ikke er
anførselstegn omkring sti+filnavnet og at stien ikke indeholder strengen
".exe" (hvilket er fuldt lovlig omend temmelig forvirrende).
Der er muligvis andre problemer, men da jeg ikke rigtig kender den Basic,
som du har har benyttet, kan jeg ikke rigtig afgøre det.
-------
Tomas
| |
leWorm (09-05-2004)
| Kommentar Fra : leWorm |
Dato : 09-05-04 21:56 |
|
hmm kan du ikke uddybe din anden metode lidt.. lidt mere præsist evt et
eksempel er ret ny i vb-verdenen.. ,(
på forhånd tak..
"leWorm" <orm@leWorm.org> skrev i en meddelelse
news:c7j9gj$28el$1@news.cybercity.dk...
> Nu har jeg fået lavet mit program, med 5 access db tilknyttet.
>
> nu er så bare mit problem, når jeg laver det om til en exe fil, og flytter
> exe filen og db'erne, så melder programmet om fejl,
> at den ikk kan finde de angivende db'er
>
> Nu er mit spørgsmål så hvordan skal man i vb fortælle den at fx db'er
ligger
> i mappe som programmet, så man kan flytte mappen hvorhen man vil..
>
>
> og er er nogen der kender til et installationsprogram, så man kan lave en
> instalationsfil..
>
>
| |
|
|