![]() |
Datenbank: MySQL • Version: 4.1.9 • Zugriff über: ZEOSLib
Probleme mit DBGrid aktualisierung..
Hallo,
ich habe ein Problem mit einem DBGrid. Ich zeige über ein DBGrid Datensätze in einem seperatem Formular an in dem ich die Datensätze ändern und neue hinzufügen kann, beim OnActivate es DBGrid.Form habe ich ein refresh eingesetzt damit er bearbeitete Datensätze mit den aktualisierten Daten anzeigt. Allerdings zeigt er mir nicht die neu erstellen Datensätze an, nicht einmal nach einem Neustart, obwohl die Daten in der DB liegen (überprüft).... :gruebel: Woran könnte das liegen?? Das DBGrid greift auf eine DataSource zu welche mit einer ZQuery verbunden ist die Direkt über die ZConnection geht. Hier mal die Grundfunktionen...
Delphi-Quellcode:
//-------------------------On Form Create---------------------------------------//
procedure TForm1.FormCreate(Sender: TObject); begin with ZQuery1 do begin Close; SQL.Text := 'SELECT * FROM munitionsdatenblatt WHERE MAT LIKE :MAT AND ArtBez LIKE :Artikel AND ModBez LIKE :Modell AND VerZw LIKE :Verwendung'; ParamCheck := True; ParamByName('MAT').AsString := '%'; ParamByName('Artikel').AsString := '%'; ParamByName('Modell').AsString := '%'; ParamByName('Verwendung').AsString := '%'; Open; Label3.Caption:= 'Anzahl Datensätze ' + IntToStr(ZQuery1.RecordCount); end; end; //-------------------------Verwendung Changed-----------------------------------// procedure TForm1.VerwendungChange(Sender: TObject); begin if MATKlasse.Text = '<Alle>' then MATStr:= '' else MATStr:= MATKlasse.Text; begin ZQuery1.ParamByName('MAT').AsString := MATStr + '%'; ZQuery1.ParamByName('Modell').AsString := '%' + Modell.Text + '%'; ZQuery1.ParamByName('Artikel').AsString := '%' + Artikel.Text + '%'; ZQuery1.ParamByName('Verwendung').AsString := '%' + Verwendung.Text + '%'; ZQuery1.Refresh; Label3.Caption:= 'Anzahl Datensätze ' + IntToStr(ZQuery1.RecordCount); end; end; //-------------------------ONFORM GET FOCUS-------------------------------------// procedure TForm1.FormActivate(Sender: TObject); begin ZQuery1.Refresh; // REFRESH GRID FOR GETTING CHANGED DATASETS end; Mfg, Steve |
Re: Probleme mit DBGrid aktualisierung..
Hast Du RequestLive auf True stehen?
|
Re: Probleme mit DBGrid aktualisierung..
Ja..
Cached Updates := False Mfg, Steve Die Änderungen zeigt er an aber nur halt nicht die neu eingetragenen.. |
Re: Probleme mit DBGrid aktualisierung..
So hab natürlich weitergetestet und bemerkt das er mir sowieso nicht alle Datensätze anzeigt und zwar jene die nicht ALLE Felder:
Delphi-Quellcode:
ausgefüllt haben, ist ein Feld leer zeigt er den Datensatz erst garnicht an...
ParamByName('MAT').AsString := '%';
ParamByName('Artikel').AsString := '%'; ParamByName('Modell').AsString := '%'; ParamByName('Verwendung').AsString := '%'; Mfg, Steve |
Re: Probleme mit DBGrid aktualisierung..
Hi Steve,
du bist ein NULL Opfer. Wenn die Spalten kein NOT NULL constraint besitzen, dann muss die Logik für dein SELECT statement etwas aufgerüstet werden. Wenn kein Suchbegriff für "Verwendung" eingegeben wurde, dann entferne die expression "verwendung = '%'" aus dem statement. marabu |
Re: Probleme mit DBGrid aktualisierung..
Zitat:
|
Re: Probleme mit DBGrid aktualisierung..
Das problem ist wenn ich '%' weglasse er nur am Anfang der Bezeichnung sucht und nicht innerhalb der Bezeichnung.
IFNULL habe ich mir hier gerade angeguckt allerdings müsste man ihm doch einfacher sagen können das er alles ausspuckt, ob NOTNULL oder NULL??! EDIT:// Für den Fall das es nicht ohne IFNULL geht, hat dann jemand einen Link parat auf dem es genau beschrieben wird? Mfg, Steve |
Re: Probleme mit DBGrid aktualisierung..
Zitat:
Zitat:
|
Re: Probleme mit DBGrid aktualisierung..
Du sollst nicht das % weglassen, sondern den ganzen Teilausdruck wenn er nicht bestückt wird. Schau mal:
Delphi-Quellcode:
marabu
begin
with Query do begin SQL.Text := 'SELECT * FROM munitionsdatenblatt WHERE 1 = 0'; if VerwendungEdit.Text <> '' then begin SQL.Add(' or a like :verwendung'); ParamByName('verwendung').AsString := '%' + VerwendungEdit.Text + '%' end; // weitere Parameter hier ... Open; end; end; |
Re: Probleme mit DBGrid aktualisierung..
Oder anstatt dein SQL Statement Stück für Stück aufzubauen, kann man bei der ZeosLib auch MacroByName verwenden. Hat den gleichen Effekt, sieht aber übersichtlicher aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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-2025 by Thomas Breitkreuz