Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verwendung Datenmodul (https://www.delphipraxis.net/111137-verwendung-datenmodul.html)

d6lpz 30. Mär 2008 13:05


Verwendung Datenmodul
 
Hallo,
möchte ungefähr folgendes erreichen:

Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
        i :integer;
begin

        for i:=1 to 12 do
                DataModule1.ADOQuery[i].active :=False
        end;
end;
Frage: wie kann man eine Variable in einem Bezeichner verwenden?

Danke für alle Tips

Dirk

[edit=MrSpock]Delphi-Code Tags eingefügt. Mfg, MrSpock[/edit]

mkinzler 30. Mär 2008 13:07

Re: Verwendung Datenmodul
 
Such mal nach .FindComponent()

d6lpz 30. Mär 2008 13:24

Re: Verwendung Datenmodul
 
Zitat:

Zitat von mkinzler
Such mal nach .FindComponent()

habe jetzt folgendes:
Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
        str_datstart :string;
        str_datend :string;
        i :integer;
const
  NamePrefix = 'ADOQuery';

begin
        str_datstart :='01.01.2007';
        str_datend :='31.12.2007';

        for i:=1 to 12 do
                with DataModule1(FindComponent(NamePrefix + [i])) do
                begin
                        active :=False;
                end;
        end;
end;
funktioniert leider nicht - ich komme mit dieser Sache noch nicht zurecht :-(

DeddyH 30. Mär 2008 13:28

Re: Verwendung Datenmodul
 
Delphi-Quellcode:
with DataModule1.FindComponent(NamePrefix + IntToStr(i)) as TADOQuery do
Versuch es mal so.

[edit] Typecasting vergessen [/edit]

marabu 30. Mär 2008 13:37

Re: Verwendung Datenmodul
 
Hallo Dirk,

manchmal genügt eine einzelne Zeile zum Schließen aller offenen DataSets:

Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
  str_datstart, str_datend: string;
  i: Integer;
  dtStart, dtEnd: TDateTime;
begin
  dtStart := EncodeDate(2007, 1, 1);
  dtEnd := EncodeDate(2007, 12, 31);

  // ...

  DataModule1.ADOConnection1.Close;
end;
Freundliche Grüße

d6lpz 30. Mär 2008 13:43

Re: Verwendung Datenmodul
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
with DataModule1.FindComponent(NamePrefix + IntToStr(i)) as TADOQuery do
Versuch es mal so.

[edit] Typecasting vergessen [/edit]

Danke !!

Sorry für meine NOCH unqualifizierten Fragen :gruebel: - bin halt beginner.

Dirk

DeddyH 30. Mär 2008 13:44

Re: Verwendung Datenmodul
 
Wir haben alle mal angefangen :zwinker:

d6lpz 30. Mär 2008 13:52

Re: Verwendung Datenmodul
 
Zitat:

Zitat von marabu
Hallo Dirk,

manchmal genügt eine einzelne Zeile zum Schließen aller offenen DataSets:

Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
  str_datstart, str_datend: string;
  i: Integer;
  dtStart, dtEnd: TDateTime;
begin
  dtStart := EncodeDate(2007, 1, 1);
  dtEnd := EncodeDate(2007, 12, 31);

  // ...

  DataModule1.ADOConnection1.Close;
end;
Freundliche Grüße

Hallo

Aber zum Öffnen muß ich doch alle Querys einzeln aktivieren oder geht das auch anders??
Dirk

marabu 30. Mär 2008 14:02

Re: Verwendung Datenmodul
 
Zum Öffnen aller DataSets einer Connection kannst du über deren Eigenschaft DataSets[] iterieren. Vielleicht möchtest du das beim Ereignis AfterConnect() der Connection erledigen.

d6lpz 30. Mär 2008 14:03

Re: Verwendung Datenmodul
 
Zitat:

Zitat von DeddyH
Wir haben alle mal angefangen :zwinker:

Danke für dein Verständnis :hi:

Habe nach einigem Probieren und "Hilfe" lesen aber immer noch Probleme.

Bekomme bei Folgendem die Meldung '"." erwartet, aber ";" gefunden'
Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
        x_datstart, x_datend: TDateTime;
        i :integer;
const
  NamePrefix = 'ADOQuery';

begin
        x_datstart := EncodeDate(2007, 1, 1);
        x_datend := EncodeDate(2007, 12, 31);

        for i:=1 to 12 do
            with DataModule1.FindComponent(NamePrefix + IntToStr(i)) as TADOQuery do
                begin
                        Active:=false;
                        Parameters.ParamByName('emplid').Value:=lb_name.KeyValue;
                        Parameters.ParamByName('DatStart').Value:=x_datstart;
                        Parameters.ParamByName('DatEnd').Value:=x_datend;
                end;
        end;
end;

end.
die Variante geht auch nicht:

Delphi-Quellcode:
procedure TMain.lb_nameClick(Sender: TObject);
var
        x_datstart, x_datend: TDateTime;
        i :integer;
const
  NamePrefix = 'ADOQuery';

begin
        x_datstart := EncodeDate(2007, 1, 1);
        x_datend := EncodeDate(2007, 12, 31);

        for i:=1 to 12 do
            with DataModule1.FindComponent(NamePrefix + IntToStr(i)) as TADOQuery do
                begin
                        .Active:=false;
                        .Parameters.ParamByName('emplid').Value:=lb_name.KeyValue;
                        .Parameters.ParamByName('DatStart').Value:=x_datstart;
                        .Parameters.ParamByName('DatEnd').Value:=x_datend;
                end;
        end;
end;

end.
Hast ud einmal ein Hinweis?
Dirk

marabu 30. Mär 2008 14:08

Re: Verwendung Datenmodul
 
Zum END in Zeile 20 gibt es kein passendes BEGIN, also weg damit.

d6lpz 30. Mär 2008 14:17

Re: Verwendung Datenmodul
 
Zitat:

Zitat von marabu
Zum END in Zeile 20 gibt es kein passendes BEGIN, also weg damit.

Das kann doch wohl nicht wahr sein ...

Ich fummele hier rum...

Ich dachte halt zu jedem Begin gehört ein End :wall:

Danke
Dirk

MrSpock 30. Mär 2008 15:08

Re: Verwendung Datenmodul
 
Ja, das ist auch richtig: zu jedem begin gehört ein end, aber zu einem for gehört nur dann ein end, wenn du mehr als eine Anweisung schreibst, die in einem begin ... end Block stehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz