| Autor | 
Beitrag | 
D. Annies 
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: So 26.01.14 03:32 
 
Hi Delpher,
 
leider funktioniert die folgende Konstruktion mit einer Hilfsvariablen nicht:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
  				 | 									procedure TBuchMain.qSchuelerSort(Sender: TObject); begin                                                                                   sortkrit := ' KLASSE, IDENT_NR, NAME, VORNAME ';   screen.cursor := crhourglass;   if fileexists(label30.caption + extractfilename(TbSchueler.tablename)) then   begin     QSchueler.close;  QSchueler.sql.clear;        QSchueler.sql.text := format('select * from "%s" order by sortkrit', [TbSchueler.tablename]);       QSchueler.prepare;     QSchueler.open;     datasource1.dataset := QSchueler;   end;   screen.Cursor := crdefault; end;					 				 | 			 		 	  
Gibt es einen (anderen) Weg?
 Gruß, Detlef  
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
Sinspin 
        
 
Beiträge: 1335 
Erhaltene Danke: 118 
 
Win 10 
RIO, CE, Lazarus 
 | 
Verfasst: So 26.01.14 06:11 
 
Was funktioniert denn nicht? Bzw. was für einen Fehler bekommst du denn? Auf den ersten blick würde ich sagen du ersetzt "sortkrit" im SQL nicht.
 Kleiner Tipp, wenn du bei der Zuweisung mit ...SQL.Text arbeitest kannst du dir das SQL.Clear vorher schenken. 
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
  
 | 
 | 
haentschman 
        
 
Beiträge: 285 
Erhaltene Danke: 33 
 
 
DX10 Berlin Professional 
 | 
Verfasst: So 26.01.14 10:13 
 
Moin...    
ok, weil heute Sonntag ist:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
  				 | 									procedure TBuchMain.qSchuelerSort(Sender: TObject); begin                                                                                   SortKrit := ' KLASSE, IDENT_NR, NAME, VORNAME ';   Screen.Cursor := crHourGlass;   if FileExists(Label30.Caption + ExtractFilename(TbSchueler.Tablename)) then   begin     QSchueler.Sql.Text := Format('select * from %s order by %s', [TbSchueler.Tablename, SortKrit]);     QSchueler.Open;     Datasource1.Dataset := QSchueler;   end;   Screen.Cursor := crDefault; end;					 				 | 			 		 	  		
Anmerkungen: 
 Kennt deine Codevervollständigung nur kleine Buchstaben?
 Was passiert wenn der Tabellenname falsch geschrieben ist?
 Warum die Sortierkriterien über Variable wenn die eh fix sind?  
 
 Für diesen Beitrag haben gedankt: D. Annies
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: So 26.01.14 10:51 
 
Moin Haentschman,
 
 a) Groß- Kleinbuchstaben sind doch optional  (?)
 
 b) Kann nicht passieren
 
 c) weil ich diese Kriterien weiterreiche, z.B. an die jeweilige Groupbox_x.caption.
 
 Danke für deine Hilfe,
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
haentschman 
        
 
Beiträge: 285 
Erhaltene Danke: 33 
 
 
DX10 Berlin Professional 
 | 
Verfasst: So 26.01.14 11:00 
 
	  | Zitat: | 	 		  | a) Groß- Kleinbuchstaben sind doch optional (?)  | 	  
... ja sicher. Ich denke, daß die Lesbarkeit sehr leidet wenn nur Kleinbuchstaben benutzt werden.  
 
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Mo 27.01.14 09:08 
 
Hi Haentschman,
 
   leider funzt der Code, den du gepostet hast, doch nicht - D6??
 
 Schade,
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
baumina 
        
 
Beiträge: 305 
Erhaltene Danke: 61 
 
Win 7 
Delphi 10.2 Tokyo Enterprise 
 | 
Verfasst: Mo 27.01.14 09:12 
 
 Für diesen Beitrag haben gedankt: Martok
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Mi 29.01.14 17:37 
 
Die Fehlermeldung ist: Ungültiger Feldname ... Column '' is not found.
 
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Mi 29.01.14 17:44 
 
Wie sieht denn das resultierende SQL aus?
 		                                                          Delphi-Quelltext                                	 															1: 2:
  				 | 									QSchueler.Sql.Text := Format('select * from %s order by %s', [TbSchueler.Tablename, SortKrit]); ShowMessage(QSchueler.Sql.Text);									 | 			 		 	   
 
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Mi 29.01.14 19:45 
 
showmessage liefert:
 
 select * from Schueler.dbf order by " Name, Vorname " 
 
 also, die Hochkommata stören wohl ...
 
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Mi 29.01.14 19:49 
 
Ich frage mich, wo die herkommen. Mit haentschmans Code sind die jedenfalls nicht zu erklären. 
 
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Fr 31.01.14 12:23 
 
Hat keiner noch eine andere Idee?
 
 Der Tabellenname steht übrigens auch in Hochkommata, das ist aber ok.
 
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Fr 31.01.14 13:34 
 
Ohne aktuellen Code kann man nur mutmaßen. 
 
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Fr 31.01.14 17:25 
 
Der aktuelle Code ist genau der von Haentschman.
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Fr 31.01.14 17:36 
 
Das kann ich beim besten Willen nicht nachvollziehen. Mein Testcode (einfach nur eine Query und einen Button aufs Formular geklatscht):
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9:
  				 | 									procedure TfrmTest.ButtonTestClick(Sender: TObject); var   SortKrit, Tablename: string; begin   Tablename := 'Schueler.dbf';   SortKrit := ' KLASSE, IDENT_NR, NAME, VORNAME ';   Query1.Sql.Text := Format('select * from %s order by %s', [Tablename, SortKrit]);   ShowMessage(Query1.SQL.Text); end;					 				 | 			 		 	  
Und die Ausgabe:
 	  | Zitat: | 	 		  | select * from Schueler.dbf order by  KLASSE, IDENT_NR, NAME, VORNAME | 	 
  
 
 Für diesen Beitrag haben gedankt: D. Annies
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Fr 31.01.14 17:37 
 
AHA!!
 ich habe ja die %s in Hochkommata!
 Jetzt mal sehen ... 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Fr 31.01.14 17:43 
 
Sooooo, jetzt geht's:
 
 [Delphi]
 Query1.Sql.Text := Format('select * from "%s" order by %s', [Tablename, SortKrit]);
 [/Delphi] 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
WasWeißDennIch 
        
 
Beiträge: 653 
Erhaltene Danke: 160 
 
 
 
 | 
Verfasst: Fr 31.01.14 18:33 
 
Man sollte fremden Code auch so ausprobieren, wie er gepostet wurde    
 
 | 
 | 
D. Annies   
        
 
Beiträge: 1843 
 
windows 7 
D6  Enterprise, D7  Pers und TD 2006 
 | 
Verfasst: Fr 31.01.14 19:53 
 
Du hast recht, das hatte ich übersehen. - Also, in dieser Sache alles gelöst!
 Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
  
 | 
 | 
jackle32 
        
 
Beiträge: 183 
Erhaltene Danke: 7 
 
Win7 
Delphi XE5 Starter, RAD Studio XE7 Pro 
 | 
Verfasst: Fr 31.01.14 20:13 
 
Ich frag mich grad warum so kompliziert. Ich baue meine SQL-Anfragen immer so zusammen:
 
		                                                          Delphi-Quelltext                                	 															1:
  				 | 									Query1.SQL.Text := 'SELECT * FROM ' + TbSchueler.tablename + ' ORDER BY ' + sortkrit;					 				 | 			 		 	  
Oder kennt einer der anwesenden hier darin einen Nachteil?
 Gruß,
 Jack  
_________________ Es gibt keine dummen Fragen, nur dumme Antworten.
  
 Für diesen Beitrag haben gedankt: D. Annies
 | 
 |