![]() |
Datenbank: AbsolutDB • Version: 5.02 • Zugriff über: ABSQuery
SQLQuery funtioniert nicht richtig
:wiejetzt: Hallo DPler ich hab ein ganz doofes Problem. Ich möchte wenn ich in einem DBGrid auf den Namen klicke, dass es nach dem ColumnNamen sortiert wird. Es funktioniert auch nur verändert er die Colunmbreite. Wenn ich einen Haltepunkt einfüge um zu sehen ob er alles richtig macht, geht es und er lässt die Breite wie sie ist.
Genauso ist es beim Laden eines Bildes mit Haltepunkt geht es, ohne nicht. Hier der Query zum sortieren.
Code:
und hier der zum laden eines Bildes.
procedure TMainFrm.grdKundenTitleClick(Column: TColumn);
var i: integer; s: String; begin for i := 0 to grdKunden.Columns.Count -1 do begin if Column.Index = i then begin qryKunden.Close; qryKunden.SQL.Clear; s:= grdKunden.Columns[i].FieldName; qryKunden.SQL.Add('SELECT * FROM kunden ORDER BY ' + s); qryKunden.Open; end; end; end;
Code:
Ich hab echt keine Idee mehr, zumal ich mit der Programmierung eh nicht so fit bin und das meine erste Datenbank ist.
procedure TMainFrm.qryBilderAfterScroll(DataSet: TDataSet);
var Str: TMemoryStream; begin btnSave.Enabled := DataSet.RecordCount > 0; // MainFrm Str := TMemoryStream.Create; try TBlobField(DataSet.FieldByName('Datei')).SaveToStream(Str); Str.Position := 0; if Str.Size = 0 then begin imgPLBild.Picture.Graphic := nil; Exit; end; if imgPLBILD.Picture.Graphic = nil then imgPLBILD.Picture.Graphic := TJPEGImage.Create; imgPLBILD.Picture.Graphic.LoadFromStream(Str); imgPLBild.Repaint; finally Str.Free; end; // finally end; :wall: Ich hoffe Ihr könnt mir helfen. |
Re: SQLQuery funtioniert nicht richtig
Hi !
Zitat:
Versuchs mal so: (die Schleife ist nicht notwendig)
SQL-Code:
Hast du persistente columns im DBGrid ?
procedure TMainFrm.grdKundenTitleClick(Column: TColumn);
begin qryKunden.Close; qryKunden.SQL.Clear; qryKunden.SQL.Add('SELECT * FROM kunden ORDER BY ' + Column.FieldName); qryKunden.Open; end Verwende doch für das Bild ein DBJpeg (aus der Unit DBJpeg) :wink: |
Re: SQLQuery funtioniert nicht richtig
Ich habe die Schleife weggelassen, aber das Resultat ist das Gleiche, mit Haltepinkt OK, ohne nicht.
Im Moment sind die Columns alle persistent. Kann es sein das ein Zeitproblem vorliegt ? Ich hab auch schon einen Dalay(1000) eingebaut vor dem Query, geht aber auch nicht. |
Re: SQLQuery funtioniert nicht richtig
|
Re: SQLQuery funtioniert nicht richtig
Hab noch was rausgefunden
wenn ich es richtig umständlich programmiere geht es auch
Delphi-Quellcode:
auch hier bleibt die Spaltenbreite.
if column.index = 1 then begin
qryKunden.Close; qryKunden.SQL.Clear; usw.... |
Re: SQLQuery funtioniert nicht richtig
Hallo Ferber, ich probier den Grid heute abend aus, wenn ich wieder im Hotel bin. Ich denke 50 MEG mit dem Handy freut den Chef nicht so sehr und Spaß machts auch nicht.
Was ich komisch finde ist das es mit dem Haltepunkt geht. Was passiert da ?? Mein Bild läd auch nur mit dem Haltepunkt. Kann es an der Querykomponente selbst liegen ??? |
Re: SQLQuery funtioniert nicht richtig
Versuch mal vor dem sortieren folgendes:
Delphi-Quellcode:
D5 / D7 verändert SelectedIndex beim Titleklick nicht, BDS2006 reagiert anders.
SelectedIndex:=Column.Index
Vielleicht hilfts !? Edit: Ist abhängig von Options - dgColumnResize |
Re: SQLQuery funtioniert nicht richtig
Hi,
Habe dein Prog probiert. Gibt es bei dir eigentlich keine Fehler wenn man mehrfach auf Spalten clickt?
Delphi-Quellcode:
Ohne persistente Felder der query werden die Spalten aber noch immer geändert, da die query geschlossen und neu erstellt wird. Dann greift das dbgrid auf die Felder-Standardbreite zurück. Bei float-feldern wird standardmäßig displaywidth=10 eingestellt. Schau mal im Objektinspector diesen Wert deiner Felder nach.
for i := 0 to grid.Columns.Count -1 do
if Column.Index = i then s:= grid.Columns[i].FieldName; q.Close; q.SQL.Clear; q.SQL.Add('SELECT * FROM table ORDER BY ' + s); q.Open; Setze also im OI den Wert displaywidth auf die gewünschhte column-breite. Werner |
Re: SQLQuery funtioniert nicht richtig
Hallo,
bin erst jetzt im Hotel. Hab gleich mal probiert ob es bei mir Fehler gibt wenn ich mehrmals die Titelleiste anklicke. Nö alles normal. Ich muss meine Felder in diesem Grid vordefinieren, da ich foreign Keys habe und diese nicht anzeigen möchte. Wenn aber wüsste wie ich das umgehen kann, würde ich das tun. In meinen Cols stehen ja Werte drin, die breite stimmt ja auch bis zu dem Zeitpunkt an dem ich den Query ausführe. |
Re: SQLQuery funtioniert nicht richtig
Hi,
Zitat:
Bitte lies noch mal meinen Vorschlag durch. Ich rede von Breite/displaywidth der persistenen Felder. Daß bei dir kein Fehler bei dem Code auftaucht verstehe ich auch nicht so ganz. Das DBgrid hat doch mehrere Spalten, oder nicht. Hast du mal unterschiedliche Spalten angeclickt? Dein code macht nämlich folgendes: er geht über alle Spalten, falls Treffer query schließen und neu öffnen. Dann muß aber das Dbgrid sich auf die neue query einstellen, während du noch in deiner Schleife bist. Bei mir (D6 prof) hagelts. Werner |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz