Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme bei Postausgangsbuch (https://www.delphipraxis.net/77476-probleme-bei-postausgangsbuch.html)

trabigti 20. Sep 2006 08:14

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?

marabu 20. Sep 2006 08:33

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:
CREATE VIEW pab_abt AS SELECT * FROM pab_alle WHERE Abteilung = :abteilung
Freundliche Grüße vom marabu

trabigti 20. Sep 2006 08:38

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!

marabu 20. Sep 2006 08:50

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

trabigti 20. Sep 2006 08:56

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

marabu 20. Sep 2006 09:21

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:
SELECT * FROM pab_alle WHERE abteilung = 2
Diese Technik kannst du noch verfeinern, indem du die 2 durch einen Parameter ersetzt:

SQL-Code:
SELECT * FROM pab_alle WHERE abteilung = :abteilung
Diesen Parameter musst du dann vor dem Open() der Query noch setzen:

Delphi-Quellcode:
Query.Params.ParamByName('abteilung').AsInteger := 2;
Selbst eine VIEW ist mit Paradox auf Umwegen möglich:

SQL-Code:
SELECT * FROM "pab_abt.sql"
In der SQL-Datei muss dann dass erste SQL-Statement aus diesem Beitrag stehen.

marabu

trabigti 20. Sep 2006 09:47

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

hoika 20. Sep 2006 10:20

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:
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;
Ich empfehle das Buch Datenbanken mit Delphi von Andres Kosch.

Heiko

trabigti 20. Sep 2006 12:20

Re: Probleme bei Postausgangsbuch
 
Mitlerweile ist es mir gelungen mittels dem oben genannten:
SQL-Code:
select * from sd1 where abteilung = 'Schreibdienst'
den ich im Objektinspektor für das Query eingegeben habe gelungen die gewünschten Datensätze gefiltert im Grip anzuzeigen!

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!

uwewo 20. Sep 2006 12:28

Re: Probleme bei Postausgangsbuch
 
Das ist ganz normal, die Select Anweisung zeigt Dir die Daten nur an.

Schau Dir mal das Tutorial von Luckie an, es ist zwar für MySQL aber die vorgehensweise ist dieselbe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz