![]() |
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 ![]() |
Re: Probleme bei Postausgangsbuch
das hatte ich mir schonmal angeschaut nur leider kann ich die demo nicht laden da bringt mir Delphi immer den fehler das das Form das falsche script hat!
Wie kann ich den DBNavigator wieder nutzen? |
Re: Probleme bei Postausgangsbuch
Hallo,
viell. ist ja das Where schuld. Nimm es doch testweise mal raus. Da ich keinen Navigator benutze und keine Lust zum Probieren habe :stupid: musst du es selber mal machen. Heiko |
Re: Probleme bei Postausgangsbuch
Du solltest mal prüfen, ob die Verkettung der Komponenten noch stimmt. Immerhin hast du eine Table-Komponente gegen eine Query ausgetauscht. Der DBNavigator und alle datensensitiven Controls auf deiner Form müssen die gleiche DataSource verwenden, wie dein Grid - dann wird es schon klappen. Und setze die Eigenschaft RequestLive deiner Query auf True, damit du auch Änderungen machen kannst.
marabu |
Re: Probleme bei Postausgangsbuch
riesen dank an Marabu!
ich hatte RequestLive = False!!! Vielen Dank für eure hilfe |
Re: Probleme bei Postausgangsbuch
Hi, danke nochmal für eure Hilfe!
Ich würde euch gern mal das Programm hochladen damit ihr es euch es mal ansehen könntet! Wie mach ich das? Es wäre wirklich nett wenn ihr es mal anschauen würdet! Das Programm funktioniert zwar aber leider sind die Passwörter noch als Hardcode im Qelltext abgelegt und ich kann die Grids nicht ausdrucken, ich vermutet auch das ich auch noch andere Fehler gemacht habe! Seit bitte nich zu hart ich arbeit wirklich das erste mal mit datenbanken und delphie! MfG Stephan |
Re: Probleme bei Postausgangsbuch
weis keiner wie ich euch das Programm mal hochladen kann?
|
Re: Probleme bei Postausgangsbuch
Hallo Stephan,
am besten du packst alle relevanten Dateien deines Projektes - ohne *.~* und *.dcu und *.exe - in ein ZIP-Archiv. Im Beitragseditor findest du am unteren Rand die Eingabeelemente für das Upload eines Attachments. Grüße vom marabu |
Re: Probleme bei Postausgangsbuch
Liste der Anhänge anzeigen (Anzahl: 1)
Danke Marabu,
hier das Programm, es wäre wirklich nett wenn du mir bei der Passwortabfrae und der Druckfunktion helfen könntest! |
Re: Probleme bei Postausgangsbuch
weiß vieleicht jemand wie man in dem Programm ne Passwortabfrage realisieren kann?
|
Re: Probleme bei Postausgangsbuch
Hallo,
wird dieses spezielle Problem nicht schon in deinem anderen thread diskutiert? ![]() Grüße vom marabu |
Re: Probleme bei Postausgangsbuch
hab aber leider noch keine Konkrete Lösung!
|
Re: Probleme bei Postausgangsbuch
Moin :-)
Ist das Thema noch weiter aktuell? Egal, ich werd mal einige Anmerkungen meinerseits abgeben; in wie weit selbige (un)nützlich sind, bleibt im Auge des Betrachters ;-) Dein (erstes) Projekt ist ein elekronisches Postausgangsbuch (PAB), welches die händisch geführten PAB's ersetzen soll? Soweit echt mutig, aber so einfach wie Du dir das vorstellst geht das nicht. Ein PBA ist eine Art Dokument, welches im Falle eines Rechtsstreites durchaus Beweiskraft haben kann und somit schon einmal 'fälschungssicher' bzw manipulationssicher sein muss. Von daher MUSS das PBA eine eindeutige Zugriffsregelung haben, wo beo jeder Benutzer (intern) durch eine eindeutige Kennung identifizierbar sein muss und diese Kennung muss (neben einigen anderen wichtigen Daten) eindeutig im Datensatz abgelegt werden. Damit ist gewährleistet bzw im Zweifelsfalls belegbar, welcher Benutzer einen bestimmten Datensatz angelegt hat. Die (interne-nicht veränderbare Kennung) ist sozusagen die 'Handschrift' eines Benutzers. Manipulationssicher bedeutet u.a. auch, dass datumsmässige nachträgliche Einträge nicht möglich sind, weil JEDER NEUE Eintrag automatisch eine fortlaufende Nummer erhält und somit 'Tricksereien' mit zwischengeschobenen Einträgen auffallen. Zur Zugangsregelung: hier einen EINDEUTIGE Einzel-Benutzer Regelung vorsehen, will sagen: JEDER Benutzer erhält neben seinem eigentlichen Namen sein persönliches Kennswort - zugleich ist der Benutzer einer Abteilung zuzuorden, damit nach erfolgreicher Anmeldung auch nur das für die Abteilung zuständige PAB geladen/angezeigt wird. Natürlich sollte auch ein 'Supervisor' eingerichtet werden, welcher Zugriff auf den gesamten Datenbestand hat; der Admin (kann auch gleichzeitig der Supervisor sein) hat die Möglichkeit, weitere Benutzer anzulegen und das (erstmalige) Passwort. Die Benutzertabelle ist natürlich separat anzulegen. Wenn das Programm im Netz betrieben werden soll - und davon gehen mal aus wegen der verschiedenen Abteilungen - dann muss natürlich die 'Datenbank' auch im Netz verfügbar sein (erklärt sich fast von selber ;-) ). Ferner sollte beachtet werden, dass auf den Client-PC's die BDE installiert sein muss (sofern mit BDE und Paradox gearbeitet wird)... Hab ich jetzt alles? Mag sein,. dass ich was vergessen habe... wollt eh nur mal einige (un)wichtige Anmerkungen loswerden ;-) ... |
Re: Probleme bei Postausgangsbuch
Hallo raiguen,
ich habe ihm die Anwendung soweit fertig und sogar mit all deinen Ideen die du aufgelistet hast versehen. Das ganze geschah letzte Woche. Es werden noch ein paar Schoenheitsdinge daran gemacht fuers Auge, aber sonst ist es soweit fertig. |
Re: Probleme bei Postausgangsbuch
Zitat:
okay, dann brauch ich mir ja keine weiteren Gedanken mehr machen ;-) hätte ihm sonst auch gern geholfen, aber da ich die letzten Tage auf Kundenbesuch war, konnte ich mich erst gestern wieder einklinken... Schön, dass es noch so hilfsbereite User gibt :-) Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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