Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 25.10.10 08:16 
Hi, Delpher,
ich bekomme bei dem folgenden Code die obige Fehlermeldung.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.BtGesAuswertgClick(Sender: TObject);
begin
  //if form2.GroupBox1.Parent = form1  then form2.GroupBox1.Parent := form2;
  opendialog1.Filter := 'DBDateien (*.dbf)|merge*.dbf';
  if opendialog1.Execute then
  begin
    DaMod1.ADOTbMerge.Connection := DaMod1.ADOConnection1;
    DaMod1.ADOTbMerge.Close;
      DaMod1.ADOTbMerge.TableName := opendialog1.FileName;
    DaMod1.ADOTbMerge.Open;
    //q1sort(self);

    DaMod1.ADOQyKlaPers.close;
      DaMod1.ADOQyKlaPers.sql.text :=          // alle anderen 7, 8, 9, 10, DaZ
        format('select * from "%s" ', [DaMod1.ADOTbMerge.TableName]) +
        ' where not klasse like ''5%'' and not klasse like ''6%'' ' +
        'order by klasse, name, vorname';
    DaMod1.ADOQyKlaPers.open;
    showmessage('Schülerauswahl 78910DaZ ist getroffen');


    //Bestimme_Klassen_und_SAnzahlen(self);
    //fuelle_listbox1Kla(self);
    form2.Button1.Enabled := false;
    form2.Show;
  end;
end;

Es wird klaglos kompiliert, der Fehler ist zur Laufzeit.
Wer kann mir da heraushelfen?
Danke, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mo 25.10.10 10:13 
Schau dir deinen Code mal genauer an :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  DaMod1.ADOQyKlaPers.sql.text :=          // alle anderen 7, 8, 9, 10, DaZ
  format('select * from "%s" ', [DaMod1.ADOTbMerge.TableName]) +  // <<< Formatbefehl
         ' where not klasse like ''5%'' and not klasse like ''6%'' ' + // <<< KEIN Formatbefehl 
         'order by klasse, name, vorname';
  end;
end;

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mo 25.10.10 10:29 
Ich denke es liegt an den doppelten Anführungszeichen (").
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 25.10.10 16:06 
Hi,
nein leider nichts von beidem, habe eben noch einmal ca. 10 verschiedene andere
Versionen dieses Befehls ausprobiert - geht einfach nicht!
Danke für's Hingucken, aber was ist da los?
Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 25.10.10 19:42 
Hast Du Dir den erzeugten SQL mal anzeigen lassen?
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mo 25.10.10 22:10 
Hi Bummi,
dieser Code funktioniert an einer anderen PrgStelle einwandfrei, das wundert mich ja so.
Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 25.10.10 22:50 
Enthält DaMod1.ADOTbMerge.TableName eventuell Leerzeichen?

Gib mal den SQL-Befehl an, wenn die Fehlermeldung kommt (also try, except ausenrum und SQL-String ausgeben lassen).

Wenn wir den SQL-String haben, der den Fehler verursacht, können wir bestimmt eher helfen.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 26.10.10 08:47 
Jetzt Funktioniert es:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure TForm1.BtGesAuswertgClick(Sender: TObject);
var StripFn : string;
begin
  //if form2.GroupBox1.Parent = form1  then form2.GroupBox1.Parent := form2;
  opendialog1.Filter := 'DBDateien (*.dbf)|merge*.dbf';
  if opendialog1.Execute then
  begin
    StripFn := extractfilename(opendialog1.FileName);
    delete(StripFn, length(stripfn)-34);
    DaMod1.ADOTbMerge.Connection := DaMod1.ADOConnection1;
    DaMod1.ADOTbMerge.Close;
      DaMod1.ADOTbMerge.TableName := stripfn;
    DaMod1.ADOTbMerge.Open;

  try
    showmessage(DaMod1.ADOTbMerge.TableName);
    DaMod1.ADOQyKlaPers.close;
      DaMod1.ADOQyKlaPers.sql.text :=          // alle anderen 7, 8, 9, 10, DaZ
        'select * from ' + DaMod1.ADOTbMerge.TableName +
        ' where not (klasse like ''5%'') and not (klasse like ''6%'') ' +
        ' order by klasse, name, vorname';
    DaMod1.ADOQyKlaPers.open;
    showmessage('Schülerauswahl 78910DaZ ist getroffen');
  except
    showmessage(DaMod1.ADOQyKlaPers.sql.text);
  end;
    form2.DBGrid1.DataSource := DaMod1.DataSource2;
    form2.DBGrid1.DataSource.DataSet := DaMod1.ADOTbMerge;   //   DaMod1.Datasource2;
    form2.DBGrid1.ReadOnly := true;
    form2.DBGrid1.PopupMenu := form2.PopupMenu1;
    form2.DBNavigator1.DataSource := form2.DBGrid1.DataSource;
    form2.DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];

    showmessage('form2.DBGrid1 hat Daten');

    //Bestimme_Klassen_und_SAnzahlen(self);
    //fuelle_listbox1Kla(self);
    form2.Button1.Enabled := false;
    form2.Show;
  end;
end;

Der Fehler lag also höher im Code.
Wahrscheinlich kann ich try .. except wieder rausnehmen.
LG, Detlef

_________________
ut vires desint, tamen est laudanda voluntas