FORM (BPL) / Database /

Tags:    delphi

HEJ,

(AF en eller anden grund har min XP valgt NORSK TASTATUR (selv om jeg er dansk, så hvis der wer et Ø hvor der skulle være et Æ - bær over med det...)

Jeg er ved at udvikle et program, hvor en bruger skal kunne vælge mellem 3 udgaver. EN STANDARD - en ENTERPRISE eller en BRUGER-udgave af en form.

I stedet for at at have 3 forskellige udgaver vælger jeg at løse problemet med en SHELL (hovedprgm), hvorfra brugeren vælger den installerde udgave (implementeret som en BPL-form).

Det virker fint, lige indtil jeg prøver at overføre data fra den tilhærende databse. Lægger jeg de 3/4 komponenter på BPL formen (uanset om det er STD, ENT eller BRG-formen), UDEN interne referencer kompilerer den fint og BPL-modulet spiller fint ind med den eksisterende kode.

Sætter jeg BARE EEEN reference til en af komponenterne (* eks. DATASOURCE1.DATASET := DATATABLE1; *) og kompilerer går kompileringen fejlfri (nogle få hints - ingen i relation til databasen), men efterfølgende eksekvering gir den "famøse ACCESS-fejl".

Jeg løser problemet pt. med at overføre data til en stringgrid på BPL-formen (som et TStringList ARRAY), (men det er den elendigste løsning jeg nogensinde har lavet,) når jeg har databasen.

Jeg har prøvet at overføre DBgrid'en - Komp = OK . Eksekv: Access-fejl.

Jeg har ingen anelse om hvad det er jeg (eller systemet) gør galt, men min deadline nærmer sig og jeg er snart gråhåret (og endnu mere barhovedet - suk ).

Er der nogen som kan give mig et STORT HINT (= evt. kode-eksempel) om hvad det er som er galt (og hvad jeg kan gøre for at rette mine fejl).

Er der nogen som har erfaring med INTERBASE/ FIREBIRD / ZEOS -løsninger ???

Laver jeg løsningen som 3 programmer er der INGEN problemer, men det er ikke relevant ..

Sætter stor pris på lidt hjælp.

KRISTIAN




1 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
HEJ -PROBLEMET ER LØST:

Metoden er denne:

I parameterkaldet til BPL-formens EXECUTE kode (eller den rutine som aktiverer formen (ikke at forveksle med FORMACTIVATE (...); ) lægger jeg navnet på DATASOURCEN (TDataSource-komponenten) ind som en parameter i kaldet:

EKS:

VAR
...
Function EXecute(V1, V2, DataBase1);


Function EXecute(V1, V2 : String; DataBase1 : TDataSource) : Boolean;

I BPL-formen opretter du FØRST en dynamisk DBgrid:
MyGrid := TDBgrid.Create(NIL);

Aktiver det:
MyGrid.Enabled := True;

(* MyGrid.Visible := True *)

Sæt sammen med Database1:

MyGrid.SataSource := DataBase1;

Hent nu alle de data du ønsker .....

og inden Formen lukkes - lukkes Mygrid

MyGrid.Enabled := False;

og Mygrid frigives..

MyGrid.Free;

Sådan den rigtige DELPHI-WAY !!


Kristian











t