![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos
Umstellung Paradox ->Firebird die 2.
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP'ler,
ich habe es nun geschafft, mit den Datensteuerungskomponenten auf die Datenbank zuzugreifen. aber die Daten editieren kann ich nicht. Ich habe schon eine Kompo TZUpdateSQL eingefügt und mit dem TZQuery verbunden, dann die SQL-Statements über den Generator erstellen lassen. Aber der DB-Navigator lässt nur ein Navigieren zu. Wie erreiche ich, dass ich in die DBEdit-Kompos was eintragen kann und dann speichern? Auch arbeitet meine Filterbedingung nun nicht mehr( durch TabControl gesteuert):
Delphi-Quellcode:
Muss ich hier von TZQuery die SQL-Anweisung ändern?
procedure TFinanzaemter.TabChange(Sender: TObject);
var F: string; begin begin if tab.tabindex = 26 then ZQFinanzamt.Filtered := false else begin F := format('Name = ''%s*''', [chr(Tab.TabIndex + 65)]); ZQFinanzamt.Filtered := false; //TZQuery ZQFinanzamt.Filter := F; ZQFinanzamt.Filtered := True; end; end; end; Ich wollte nicht TZTable verwenden, da ich später von embedded Server auf den richtigen Server umstellen will. Ich habe schon in der DP gesucht, aber nichts entsprechendes gefunden.(bzw so viele Antworten) mfg BrunoT |
Re: Umstellung Paradox ->Firebird die 2.
Hallo,
für das eine Problem habe ich die Antwort bei sourceforge.net gefunden: Im ZQuery muss die Property RequestLive auf True gesetzt werden(warum nicht Standard)? Bleibt noch die Frage, wie ich das mit dem Filter löse. Außerdem habe ich gelesen, dass der Befehl
SQL-Code:
ungünstig im Client/Server - Betrieb ist, da die ganze Tabelle zum Clienten kopiert wird.
select * from Finanzamt
Wie löst man das für mein Beispiel, da ich ja über die Tabelle browse? Zu Beginn baue ich eine TStringlist auf, um den Suchvorgang über den Namen zu beschleunigen, da würde sicherlich ausreichen wenn ich
SQL-Code:
abfrage.
select Name from Finanzamt
Kann ich denn einfach in der Laufzeit die SQL-Abfrage in TZQuery ändern? mfg BrunoT |
Re: Umstellung Paradox ->Firebird die 2.
Hallo Bruno,
Zitat:
Delphi-Quellcode:
Wenn du deine Daten on-demand besorgst, brauchst du nichts zu selektieren außer dem primary key. Wenn nicht, dann solltest du die benötigte Feldliste ergänzen. Die WHERE Klausel nimmt deine Filterbedingungen auf und die ORDER-BY Klausel spiigelt die Einstellungen deiner Benutzeroberfläche wieder. Immer, wenn der Benutzer die Sortierung oder ein Filterkriterium ändert, dann generierst du mit Format(FMT_FINANZAMT, [...]) das passende SQL-Statement und aktualisierst deine Query.
resourcestring
FMT_FINANZAMT = 'SELECT id ... FROM tabelle WHERE name like ''%s%%'' ORDER BY %s'; Grüße vom marabu |
Re: Umstellung Paradox ->Firebird die 2.
Zitat:
Ich hätte das als Konstante gemacht, nachdem ich nicht glaub den SQL String übersetzen zu müssen. |
Re: Umstellung Paradox ->Firebird die 2.
Hallo Guenter,
es ist generell eine gute Idee, wenn du die in deinem Programm verwendeten SQL-Befehle an einer zentralen Stelle verwaltest. Wenn du keine eigene Lösung für das Laden zur Laufzeit entwickelt hast, dann würde ich dir Stringtable Resourcen empfehlen. So kann der Betreiber deines Programms ohne Zugriff auf die Quellen die Erstellung des Zugriffsplans beeinflussen. Grüße vom marabu |
Re: Umstellung Paradox ->Firebird die 2.
Hallo, :bouncing4: :bounce1: :bounce2:
@Marabu, @GuenterS und @alle Anderen: Danke für die Hilfe :cheers: ich habe noch nicht so viel Erfahrung mit SQL (nur Access und vor ca 15 Jahren ein RDBS unter UNIX V5). @marabu: Was meinst du mit Zitat:
Der Primärschlüssel heisst FANr. Also so:
SQL-Code:
dann kann ich auf alle Felder der Tabelle zugreifen?
SELECT fanr FROM finanzamt WHERE name LIKE A* ORDER BY name
Übrigens scheint in Firebird LIKE nicht zu funktionieren :gruebel: Ich musste
Delphi-Quellcode:
statt
ZQFinanzamt.SQL.Add('SELECT * FROM Finanzamt WHERE name STARTING WITH '''+chr(Tab.TabIndex + 65)+''' ORDER BY name');
Delphi-Quellcode:
nehmen. Letztere Abfrage ergibt zwar keine Fehlermeldung, aber auch keine Daten.
ZQFinanzamt.SQL.Add('SELECT * FROM Finanzamt WHERE name LIKE '''+chr(Tab.TabIndex + 65)+'*'' ORDER BY name');
Wo erhalte ich mal eine vollständige Sprachreferenz von Firebird 1.5?(mit Beispielen)?? :wall: Was die Ressource-String-variante betrifft, da bin ich vieleicht etwas komisch oder skeptisch. Ohne eine Diskussion vom Zaun brechen zu wollen, für mich erschließt sich der Quelltext so besser
Delphi-Quellcode:
als
ZQFinanzamt.SQL.Add('Select * from Finanzamt Where Name LIKE '''+chr(Tab.TabIndex + 65)+'*''');
Delphi-Quellcode:
da bin ich vieleicht etwas altmodisch, oder ich kommentiere zu wenig IMHO. :oops:
ZQFinanzamt.SQL.Add(format(RSting1234,['S*','Name']);
@marabu: Ich programmiere zwar mit Unterbrechungen seit 1988 in verschiedenen Sprachen aber manchmal merke ich, dass ich nichts weiss(frei nach Seneca). :shock: Was meinst du mit Zitat:
1. Gibt es auch eigene Lösungen für den Zugriff auf SQL-DB's? 2. Wie legt man Stringlist - Ressourcen an und benutzt sie? muss mal googlen! Wenn die Verwaltung einfach ist und der Zugriff schnell(beim Programmieren, man kann sich ja nicht alles merken), dann schau ich mir das mal an. Mehrsprachigkeit benötige ich nicht. 3. Was ist ein Zugriffsplan? In den seltensten Fällen soll der Anwender vorgegebene Pfade verlassen(DAU)! Wie kann ich mit der Gestaltung der Abfragen die Performance des Programms positv beeinflussen? ich danke noch mal für die schnelle Hilfe :hello: mfg BrunoT |
Re: Umstellung Paradox ->Firebird die 2.
Hallo Bruno,
mit "Daten on-demand besorgen" meine ich, dass du nicht alle 1000 Zeilen deiner Tabelle auf einmal besorgst, sondern nur die am Bildschirm sichtbaren. Dazu brauchst du eine visuelle Komponente wie z.B. TListView, die so konfiguriert (OnOwnerData) werden kann, dass sie keine Daten aufnimmt, sondern die Daten nach Bedarf anfordert. Bei dieser Vorgehensweise besorgt man sich einen DB-Cursor mit den Primärschlüsseln und holt erst bei der konkreten Datenanforderung die benötigten Felder aus der Datenbank - bei mir mit einem application cache gekoppelt. Zitat:
Später mehr. marabu |
Re: Umstellung Paradox ->Firebird die 2.
Hi Marabu,
wenn ich das richtig verstanden habe, verschiebe ich sozusagen ein Fenster über die Datenbank, so wie ich das früher bei untypisierten Dateien gemacht habe. :gruebel: Das mit den Wildcards ist mir noch nicht untergekommen :oops: , danke! Ich teste gleich mal. :hello: mfg BrunoT das geeht! |
Re: Umstellung Paradox ->Firebird die 2.
Hallo Holger,
Zitat:
Zitat:
Zitat:
Zitat:
marabu |
Re: Umstellung Paradox ->Firebird die 2.
Thanks Marabu
für die Erklärungen, was SQL betrifft, bin ich noch blind wie ein Maulwurf. Zitat:
Wie funktioniert der Application-Cache? Sollte das bedeuten, das ich anstelle dem DBGrid ein StringGrid verwende, eine Stringlist intern zur Verwaltung der benötigten Schlüssel oder Daten(vorauslesend)? das übersteigt meinen Horizont im Augenblick glaub ich. mfg BrunoT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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-2025 by Thomas Breitkreuz