Avatar billede xax Nybegynder
23. september 2003 - 15:12 Der er 24 kommentarer og
1 løsning

Programmet virker kun i samme mappe.

Jeg har lavet et program som kører access database og bruger en ADO connection. Når jeg lægger programmet på en anden computer, hvirker det kun i den mappe som jeg selv lavede programmet i. Hvordan får jeg ændret det?. Er det noget med ini filer, og kan man gøre det igennem installshield.
Avatar billede snowball Novice
23. september 2003 - 15:20 #1
Mit umiddelbare gæt er at du i din ConnectionString på din ADOConnection bare har angivet navnet på din database og altså ikke nogen sti. Derfor vil programmet kun virke hvis databasen ligger i samme folder som din .exe fil. Du kan evt. lave det så du loader stien til databasen ind fra en .ini fil !

Snowball
Avatar billede xax Nybegynder
23. september 2003 - 15:45 #2
Hvordan får jeg programmet til at hente oplysningerne fra ini filen?
Avatar billede snowball Novice
23. september 2003 - 15:55 #3
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ADODB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    procedure FormCreate(Sender: TObject);
  private
    procedure LoadSettings;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Uses Inifiles;

{$R *.DFM}

const
  DEF_CONN1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=';
  DEF_DBPATH = 'db.mdb';
  DEF_CONN2 = ';Mode=ReadWrite;Persist Security Info=True';

procedure TForm1.LoadSettings;
var
  IniFile : TIniFile;
  DBPath: String;
begin
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings.ini');
  DBPath := IniFile.ReadString('Main','DBPath',DEF_DBPATH);
  IniFile.Free;
  If FileExists(DBPath) Then Begin
    ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := DEF_CONN1 + DBPath + DEF_CONN2;
    ADOConnection1.Connected := True;
  End
  Else
    ShowMessage('Fejl - Databasen blev ikke fundet');
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection1.LoginPrompt := False;
  LoadSettings;
end;

end.

Og din settings.ini ser sådan her ud:

[Main]
DBPath=C:\sti\til\db.mdb



Snowball
Avatar billede xax Nybegynder
23. september 2003 - 15:59 #4
Takker det vil jeg lige prøve
Avatar billede xax Nybegynder
23. september 2003 - 16:23 #5
Hvor skal jeg sætte dette ind henne.
[Main]
DBPath=C:\sti\til\db.mdb
Avatar billede fun22 Nybegynder
23. september 2003 - 16:30 #6
i din ini fil
Avatar billede xax Nybegynder
23. september 2003 - 16:32 #7
Kan jeg få installshield til at bestemme hvad der skal stå i filen?
Avatar billede xax Nybegynder
24. september 2003 - 12:30 #8
Jeg får en fejl melding ved ADOConnection1.LoginPrompt := False;
Avatar billede snowball Novice
24. september 2003 - 12:34 #9
Hvad er fejlen ?

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 12:38 #10
Det er en= Class EAcesssViolation with message 'Access violation at address 004C3138 in module 'project.exe'.
Ved ikke om det siger dig noget.
Avatar billede snowball Novice
24. september 2003 - 12:42 #11
Eneste måde jeg lige kan komme i tanke om som kan give den fejl er hvis du kører din LoadSettings funktion inden du har lavet den form som ADOConnection1 er på. Dermed er ADOConnection1 komponenten jo ikke lavet endnu, og dermed får du Access Violation når du prøver på at tilgå den.

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 12:44 #12
hvad skal jeg gøre. jeg har prøve at sætte {} uden om load settings, men det gav den samme fejl.
Avatar billede snowball Novice
24. september 2003 - 12:54 #13
Har du mulighed for at maile hele programmet og databasen til mig ? Så skal jeg gerne kigge på det. Giver selvfølgelig ikke din kode videre, og skal nok slette det efter vi er færdige her.

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 12:57 #14
Okay. Det prøver vi.
Avatar billede xax Nybegynder
24. september 2003 - 13:01 #15
Hvad er din email?
Avatar billede snowball Novice
24. september 2003 - 13:02 #16
mail@geertsen.dk

Snowball
Avatar billede snowball Novice
24. september 2003 - 13:31 #17
Hhmm..Du har opsat din connection på en lidt mærkelig måde, men prøv dette:

1) Under Project -> Options -> Fanebladet Forms -> Under Auto-Create Forms flytter du ComwellData op så den står øverst på listen (ellers sker der netop det jeg forklarede i min kommentar 12:42:37)

2) Din FormCreate procedure laver du om så den ser ud som nedenstående (inkl. din ShowMessage besked ;)):

comwelldata.ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';
comwelldata.ADOConnection1.LoginPrompt := False;
LoadSettings;

Så virker det hos mig :)

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 14:01 #18
Kanon, det virker næsten også. Jeg kan bare ikke skrive noget i mine felter. Så skal jeg skrive noget for at gøre databasen aktiv
Avatar billede snowball Novice
24. september 2003 - 14:08 #19
Hvis du sætter nedenstående linier ind efter LoadSettings, så virker det:

comwelldata.DataSource1.Enabled := True;
comwelldata.ADOTable1.Active := True;


Snowball
Avatar billede xax Nybegynder
24. september 2003 - 14:10 #20
Mange tak skal du have. Det er jeg glad. Virker programmet så lige meget hvor det ligger.
Avatar billede snowball Novice
24. september 2003 - 14:21 #21
Ja, så længe du bare angiver den rigtige sti i settings.ini, så kan du køre programmet hvorfra du vil :)

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 14:25 #22
okay, får jeg så brug for min Data linker (xxxxx.udl).
Avatar billede x-masman Nybegynder
24. september 2003 - 14:29 #23
Hej snowball din Delphi ekspert.

Jeg ved godt at man ikke må reklamer men har du set det her spm?

http://www.eksperten.dk/spm/404828
Avatar billede snowball Novice
24. september 2003 - 14:29 #24
Nej, den skal du ikke bruge længere.

Snowball
Avatar billede xax Nybegynder
24. september 2003 - 14:31 #25
ok. så siger jeg tak for hjælpen.
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