![]() |
Datenbank: Paradox 7 • Zugriff über: BDE
Probleme bei Postausgangsbuch
Hallo,
ich versuche ein Postausgangsbuch über Delphi zu schreiben! Mein Problem besteht darin das ich 3 Abteilungen haben möchte die unabhängig ihre Briefe in die Datenbank einschreiben sollen und auch nur di von ihnen eingegebenen Daten sehen sollen! Eine HauptAbteilung jedoch muss nach datum geordnet alle Einträge sehen können! Wie gehe ich dabei vor? ich hatte vor alle Daten zwecks ID in eine Tabelle zu speichern da auch die Hauptabteilung Briefe eintragen muss! Wie gestalte ich die SQL Abfrage? |
Re: Probleme bei Postausgangsbuch
Herzlich willkommen in der Delphi-PRAXiS, trabigti.
Alle Zeilen in die gleiche Tabelle ist nicht verkehrt. Du wirst eine Spalte haben, welche den Abteilungsschlüssel aufnimmt. In einem RDBMS verwendet man eine VIEW um die sichtbaren Zeilen wertmäßig zu beschränken:
SQL-Code:
Freundliche Grüße vom marabu
CREATE VIEW pab_abt AS SELECT * FROM pab_alle WHERE Abteilung = :abteilung
|
Re: Probleme bei Postausgangsbuch
Hi,
ja eine Spalte mit Abteilungschlüssel ist natürlich vorhanden! Ich mus noch bemerken das ich noch nie mit SQL Befehelen gearbeitet hab und deswegen leider nicht genau weis wie ich den Befehl umsetzten soll? PS.: Meine gesamten Datensätze werden in einem DBGrid dargestellt! |
Re: Probleme bei Postausgangsbuch
Bevor es weiter geht - kannst du bitte die von dir verwendete Delphi-Version in dein DP-Profil eintragen? Außerdem musst du bei deinem Thema das konkrete RDBMS angeben (z.B. MySQL, MSDE, FB, IB oder auch Paradox) und bei Zugriff wollen wir die Komponenten sehen, die du verwendest (z.B. ADO, DBX, IBX, ZEOS, BDE, ...).
marabu |
Re: Probleme bei Postausgangsbuch
Kein Problem,
sorry für die schwierigkeiten ich bin ziemlicher Delphi anfänger ;-) Meine Version: Delphi 4 Prof. Datenbanktyp: Paradox Zugriff: BDE |
Re: Probleme bei Postausgangsbuch
Vielen Dank.
Trotz D4 solltest du die neueste BDE-Version (5.2) installiert haben. Wenn du der DataSource, mit der dein DBGrid verbunden ist, eine Query mit folgendem SQL-Statement zuordnest, dann siehst du nur noch die Sätze der Abteilung 2:
SQL-Code:
Diese Technik kannst du noch verfeinern, indem du die 2 durch einen Parameter ersetzt:
SELECT * FROM pab_alle WHERE abteilung = 2
SQL-Code:
Diesen Parameter musst du dann vor dem Open() der Query noch setzen:
SELECT * FROM pab_alle WHERE abteilung = :abteilung
Delphi-Quellcode:
Selbst eine VIEW ist mit Paradox auf Umwegen möglich:
Query.Params.ParamByName('abteilung').AsInteger := 2;
SQL-Code:
In der SQL-Datei muss dann dass erste SQL-Statement aus diesem Beitrag stehen.
SELECT * FROM "pab_abt.sql"
marabu |
Re: Probleme bei Postausgangsbuch
den Queltext verstehe ich aber da ich wirklich noch nie mit sql befehlen gearbeitet habe weis ich nicht wie man das query zuordnet und wie man den sql befehl eingeben soll
|
Re: Probleme bei Postausgangsbuch
Hallo,
zuerst einmal: Finger weg von Paradox, falls du keinen Ärger beim Kunden haben willst. Sch mal zum spass nach "Index out of range" in Google. Das ist der am meisten auftretende Fehler. Paradox funktioniert seit NT4 im Netz nicht mehr richtig. Ich habe jahrelang damit gearbeitet, nach dem Umstieg auf Firebird (jippiii ;) ) gibt es (fast) keine DB-Problem mehr. Nun zum Thema. Falls du ein TDBGrid verwenden willst, packe zusätzlich ein TDataSource aufs Form. Die Zuordnun ist DBGrid.DataSource <- TDataSource.DataSet <- TQuery Alle Abteilungen (auch die Hautpabteilung) stehen in einer eigenen Abteilung mit Id (primary key), Name, Rechte usw. Parameter theDepartmentId Integer
Delphi-Quellcode:
Ich empfehle das Buch Datenbanken mit Delphi von Andres Kosch.
with Query do
begin Close; SQL.Clear; SQL.Add('Select * From DeineTabelle'); if not DepartmentHasAllAccessRights(DepartmentId) then begin SQL.Add('Where DepartmentId=:theDepartmentId'); ParamByName('DepartmentId').AsInteger:= theDepartmentId; end; SQL.Add('Order By EntryDate Desc'); Open; // jetzt steht es im DBGrid end; Heiko |
Re: Probleme bei Postausgangsbuch
Mitlerweile ist es mir gelungen mittels dem oben genannten:
SQL-Code:
den ich im Objektinspektor für das Query eingegeben habe gelungen die gewünschten Datensätze gefiltert im Grip anzuzeigen!
select * from sd1 where abteilung = 'Schreibdienst'
Jedoch kann ich leider jetzt nicht mehr mit dem DBNavigator andere Datensätze hinzufügen oder löschen! Zur Erklärung ich habe neben meinem Grip eine Eingabemaske bestehend aus mehreren DBEdit Feldern um die Dateneinzugeben, jedoch kann ich jetzt nicht mal mehr in diese Felder schreiben! |
Re: Probleme bei Postausgangsbuch
Das ist ganz normal, die Select Anweisung zeigt Dir die Daten nur an.
Schau Dir mal das Tutorial von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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