|
| Access violation ved brug af data-modul Fra : Holger Nielsen |
Dato : 29-10-05 14:25 |
|
Jeg har lavet to varianet af et testprogram, der i runtime skal indsætte
radioknapper i en DBRadioGroup; teksten takes fra en tabel i en
database. Her følger den centrale kilde:
type
TForm1 = class(TForm)
DBRadioGroupJournals: TDBRadioGroup;
DBGridJournals: TDBGrid;
DataSourceJournals: TDataSource;
ADOConnection1: TADOConnection;
TableJournals: TADOTable;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; J: String;
begin
DBRadioGroupJournals.DataSource:= DataSourceJournals;
DBRadioGroupJournals.DataField:= 'Titel';
TableJournals.First;
for i := 1 to TableJournals.RecordCount do
begin
J:= TableJournals.Fields.Fields[1].AsString;
DBRadioGroupJournals.Items.Add(J);
DBRadioGroupJournals.Values.Add(IntToStr(i));
TableJournals.Next;
end;
DBRadioGroupJournals.ItemIndex:= 0;
end;
Det fungerer udemærket. DBGridJournals er med for at kontrollere
forbindelsen i design-mode.
Men hvis laver en variant af projektet med de tre
dataforbindelseskomponenter anbragt i et datamodul, får jeg en access
violation:
....
uses DataModuleUnit;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; J: String;
begin
with DataModule1 do
begin
DBRadioGroupJournals.DataSource:= DataSourceJournals; (* ACCESS
VIOLATION *)
DBRadioGroupJournals.DataField:= 'Titel';
TableJournals.First;
....
Hvis FormCreate kommenteres ud, kører programmet (men der vises
naturligvis intet i radioboksen).
Hvad gør jeg forkert?
Venlig hilsen
Holger Nielsen
| |
Michael Haase (30-10-2005)
| Kommentar Fra : Michael Haase |
Dato : 30-10-05 10:00 |
|
Holger Nielsen skrev dette den 29-10-2005 15:24:
[cut]
> Jeg har lavet to varianet af et testprogram, der i runtime skal indsætte
> radioknapper i en DBRadioGroup; teksten takes fra en tabel i en
> database.
>
[cut]
> Det fungerer udemærket. DBGridJournals er med for at kontrollere
> forbindelsen i design-mode.
>
[cut]
> Men hvis laver en variant af projektet med de tre
> dataforbindelseskomponenter anbragt i et datamodul, får jeg en access
> violation:
>
[cut]
>
> Hvis FormCreate kommenteres ud, kører programmet (men der vises
> naturligvis intet i radioboksen).
>
> Hvad gør jeg forkert?
>
Prøv at flytte det som giver problemer fra FormCreate til FormShow.
Det hænder at det kan hjælpe.
--
Michael Haase
| |
Holger Nielsen (30-10-2005)
| Kommentar Fra : Holger Nielsen |
Dato : 30-10-05 10:20 |
|
Michael Haase wrote:
> Prøv at flytte det som giver problemer fra FormCreate til FormShow.
> Det hænder at det kan hjælpe.
>
Bingo! Det var lige, hvad der skulle til!
Tak for hjælpen.
Holger
| |
Holger Nielsen (30-10-2005)
| Kommentar Fra : Holger Nielsen |
Dato : 30-10-05 15:29 |
|
Michael Haase wrote:
> Prøv at flytte det som giver problemer fra FormCreate til FormShow.
> Det hænder at det kan hjælpe.
>
Bingo! Det var lige det, der skulle til.
Mange tak for hjælpen!
Holger
| |
Holger Nielsen (30-10-2005)
| Kommentar Fra : Holger Nielsen |
Dato : 30-10-05 16:16 |
|
Holger Nielsen wrote:
....
> Men hvis laver en variant af projektet med de tre
> dataforbindelseskomponenter anbragt i et datamodul, får jeg en access
> violation:
Tilfældigvis er jeg på "About Delphi" stødt på løsningen: Man skal
ganske enkelt sørge for, at datamodulet indlæses før formen, se
http://delphi.about.com/library/weekly/aa101805a.htm
Holger
| |
|
|