Autor Beitrag
hanshermann
Hält's aus hier
Beiträge: 10

XP Vista Windows 7
Delphi5, Delphi2009
BeitragVerfasst: Sa 25.02.12 10:40 
Ich quäle mich seit Tagen mit folgender Anweisung:
ausblenden SQL-Anweisung
1:
select * from Kunden where Onr = 14;					

ausblenden Quelltext
1:
2:
DBGrid1.DataSource := ds_Radix;
nn := query_Radix.recordcount;

Aus der Datei werden 14 selektiert (nn)
aber es werden ALLE 1200 Sätze im DBGrid angezeigt!
Weiss jemand Rat??

Moderiert von user profile iconTh69: SQL-Tags hinzugefügt
Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Moderiert von user profile iconTh69: Titel geändert.
Moderiert von user profile iconTh69: Topic aus Datenbanken (inkl. ADO.NET) verschoben am Sa 25.02.2012 um 12:49
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 25.02.12 10:59 
Hallo Hans,

ich nehme mal an ds_Radix ist ein DataSet. Wie genau befüllst du es denn (Code)?

P.S: Bitte demnächst Code-Tags selber setzen
hanshermann Threadstarter
Hält's aus hier
Beiträge: 10

XP Vista Windows 7
Delphi5, Delphi2009
BeitragVerfasst: Sa 25.02.12 12:37 
hier ist der ganze code
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:
  Pgm_Pfad := ExtractFilePath(Application.Exename);
  DB_Name := 'Radix.abs';
  ABSDB_Radix.DatabaseName := 'Radix_DB';
  ABSDB_Radix.DatabaseFileName := Pgm_Pfad + 'HoroskDB\Radix.abs';
  ABSTable_Radix.DatabaseName := 'Radix_DB';
  ABSTable_Radix.TableName := 'Horoskope';
  with ABSTable_Radix do begin
    DataBaseName := 'Radix_DB';
    TableName := 'Horoskope';
    Active := true;
    anz := recordcount;
  end;

  FillGrid(Nr);

procedure TOpen_Form.FillGrid(ONr : String);
var Sql_String, str, Ordner : string;
  i, j, OrdnerNr, Anzahl : Integer;
  DBGrid1.DataSource := F_AllStar.ds_Radix;
  With F_AllStar.ABSQuery_Radix do begin
    DataBaseName := F_AllStar.ABSDB_Radix.DatabaseName;
    Close;
    Sql.Clear;
    Sql_String := 'Select * ';
    Sql_String := Sql_String + 'from Horoskope ';
    Sql_String := Sql_String + 'Where Ordner_Nr = ';
    Sql_String := Sql_String + ONr;
    Sql_String := Sql_String + ' Order By Zuname';
    Sql.Add(Sql_String);
    open;
  end;


Moderiert von user profile iconTh69: Code- durch Delphi-Tags ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 25.02.12 12:47 
Hallo Hans,

das sieht mir aber sehr nach Delphi-Code aus, oder?
Dann bist du nämlich hier im falschen Unterforum und ich würde den Beitrag verschieben...

Für diesen Beitrag haben gedankt: hanshermann
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: Sa 25.02.12 14:26 
Die DataSource F_AllStar.ds_Radix ist auch mit dem Query F_AllStar.ABSQuery_Radix verbunden?

_________________
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)
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 25.02.12 17:37 
user profile iconhanshermann hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TOpen_Form.FillGrid(ONr : String);
var Sql_String, str, Ordner : string;
  i, j, OrdnerNr, Anzahl : Integer;
  DBGrid1.DataSource := F_AllStar.ds_Radix;
  With F_AllStar.ABSQuery_Radix do begin
    DataBaseName := F_AllStar.ABSDB_Radix.DatabaseName;
    Close;
    Sql.Clear;
    Sql_String := 'Select * ';
    Sql_String := Sql_String + 'from Horoskope ';
    Sql_String := Sql_String + 'Where Ordner_Nr = ';
    Sql_String := Sql_String + ONr;
    Sql_String := Sql_String + ' Order By Zuname';
    Sql.Add(Sql_String);
    open;
  end;


Also, den Datenbanknamen einer Query sollte man nicht ändern, solange diese geöffnet ist.
Die lokale String Variable Sql_String benötigst du nicht. Schreibe stattdessen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    Sql.Clear;
    Sql.Add('Select *');
    Sql.Add('from Horoskope');
    Sql.Add('Where Ordner_Nr = ');
    Sql.Add(ONr);
    Sql.Add('Order By Zuname');
    open;
  end;


Danach empfiehlt es sich, im Debugger den Wert der übergebenen Stringvariablen ONr überprüfen, ob sie den von dir gewünschten Wert hat. Wenn es sich um eine Zahl handeln muß, übergebe besser ein Integer oder was auch immer du benötigst, statt einem String, und wandle erst dann, wenn du's benötigst, den Integer in einen String um.
vagtler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 96
Erhaltene Danke: 24


Delphi 2010, C# (VS 2012), Objective-C, Java
BeitragVerfasst: Sa 25.02.12 20:28 
Das hat aber so rein gar nichts mit dem Problem zu tun. Ich denke eher, dass Xion den richtige Riecher hatte, aber das kann nur der Threadersteller beantworten.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 26.02.12 11:44 
user profile iconvagtler hat folgendes geschrieben Zum zitierten Posting springen:
Das hat aber so rein gar nichts mit dem Problem zu tun. Ich denke eher, dass Xion den richtige Riecher hatte, aber das kann nur der Threadersteller beantworten.


Wenn also ONr das Filterkriterium darstellt, dann soll eine Überprüfung des Inhalts von ONr nichts mit der Problematik zu tun haben? Das kann ich nicht nachvollziehen.
vagtler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 96
Erhaltene Danke: 24


Delphi 2010, C# (VS 2012), Objective-C, Java
BeitragVerfasst: So 26.02.12 12:09 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
[...] Wenn also ONr das Filterkriterium darstellt, dann soll eine Überprüfung des Inhalts von ONr nichts mit der Problematik zu tun haben? Das kann ich nicht nachvollziehen.

Dann lies nochmal die Problemstellung:

Er bekommt alle Datensätze ohne Filterung angezeigt, d.h. ohne jegliche Einschränkung. Da kann in ONr drin stehen was will, wenn er das im falschen (d.h. in keinster Weise mit dem Grid verbundenen) TDataset-Abkömmling macht...