Drucken von Stücklisten

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
Gast

Drucken von Stücklisten

Beitrag von Gast »

Ich habe das Formular für die "Stückliste aufgelöst" nach meinen Wünschen geändert. Habe deshalb das Feld Pos aus der Tabelle BSASTL in das Formular integriert. Ich konnte auch diese Feld einfügen, nur wenn ich jetzt drucken benutze wird nichts angezeigt. Er übernimmt also diese Feld nicht in das Formular.

Folgendes hab ich gemacht:
hab den query 20 benutz und als eigenschaft von sql
Select * from BSASTL hineingeschrieben
Dann den Query im Designer in die Variablenliste aufgenommen und das besagte Feld Pos in mein Formular integriert.

Ich glaube das es daran liegt, dass er nur den ersten wert der stücklistenpositionen übernimmt(der leer ist), aber die anderen außen vor lässt. Kenn mich leider zu wenig in sql aus, um zu wissen was ich da machen kann.Was kann ich da machen??

Thx im Vorraus

MFG
Pete
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

Beitrag von SYN14 »

Hallo,

ich verstehe nicht genau, warumSie die Positionsnummer der Stücklistenpositionen in den Ausdruck zusätzlich integrieren möchten. Diese wird doch bereits in der Spalte "Pos. A" angezeigt.

mfg SYN14
Gast

Beitrag von Gast »

In meinem Ausdruck leider nicht, aber ich habe es gestern geschafft die Positionen zu integrieren. Jedoch war es nur möglich weil die Tabelle BSASTL in der query 3 schon eingetragen war, und ich wollte sie neu in die query 20 eintragen, um zu verstehen wie das ganze funktioniert.
Es liegt also an dem Sql Befehl, könnte mir jemand erklären was es genau auf sich hat mit diesem Befehl:

SELECT VC.*, VD.KONSTRUKTIONHAUPT_JN FROM V_BSASTL VC
LEFT OUTER JOIN BSAS VD ON ((VC.BSA_ID_ARTNR= VD.BSA_ID_LINKKEY)
AND (VD.KONSTRUKTIONHAUPT_JN = 'J'))

Warum benutzt man die View Tabellen und was bedeutet das VC hinter V_BSASTL...und warum steht in der mastersource d_rep2, muss ich das überhaupt definieren? Weil wenn ich nur Select * From BSASTL als Befehl eintrage übernimmt er nur den ersten Wert von der Maske Stücklistenpositionen. Das würde mir schon sehr weiterhelfen

MFG
Pete
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

Beitrag von SYN14 »

Hallo Pete,
Warum benutzt man die View Tabellen
In Ausdrucken ist es vorteilhaft anstatt Tabellen deren Views zu verwenden. In den Views sind wesentlich mehr Informationenen vorhanden, die man auch im Ausdruck ausgeben kann.
und was bedeutet das VC hinter V_BSASTL
Das "VC" wird nur als Alias für den Viewnamen "V_BSASTL verwendet und ist SQL-Standard. Wenn man zwei oder mehr Tabellen in einem Join verwendet, benötigt man bei der Ausgabe der Felder einen eindeutigen Kontext, aus welcher Tabelle das Feld kommt. Man könnte anstatt VC auch ein XYZ nehmen.
und warum steht in der mastersource d_rep2, muss ich das überhaupt definieren?
Wenn man einfach ein SELECT * FROM BSASTL verwendet, dann würden alle Stücklistenpositioenn angezeigt werden. Dies können hunderttausende sein. Die MasterSource bedeutet nichts anderes, als das die Datensätze der Querry von dem Datensatz aus diesem Dataset (d_2) abhängig ist. Wie die Abhängigkeit aussieht, steht dann unter MasterLinks.
Weil wenn ich nur Select * From BSASTL als Befehl eintrage übernimmt er nur den ersten Wert von der Maske Stücklistenpositionen
Ausdrucke in AvERP sind prinzipiell so aufgebaut, dass der Hauptdatensatz - also der Datensatz aus der Maske, wo man den Ausdruck aufruft - an die q_rep1 gegeben wird. Und alle weiteren Querries sind von diesem abhängig (wie zum Beispiel Stücklistenpositionen zu einer Stückliste oder Rechnungspositionen zu einer Rechnung). Diese 1:n Beziehung muss natürlich auch im Report abgebildet werden. Dies wird in FastReport über eine Master-Detail Beziehung (Hauptband und Deteilband) der Bänder realisiert.

mfg SYN14
Gast

Beitrag von Gast »

Vielen Dank erstmal, wenn sie mir nun noch eklären könnten wie man in FastReport solche Master-Detail Beziehungen anfertigt, oder sagen wo ich es nachlesen kann, waer ich fürs erste mal zufrieden. :D


MFG
Pete
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

FastReport

Beitrag von SYN14 »

Diese Beziehung wird hergestellt durch Verwendung von verschiedenen Bandtypen. Im Ausdruck sollte es immer ein Band vom Typ Hauptdaten geben. Wenn Sie dieses auf dem Report plazieren, müssen Sie eine Datenquelle angeben. Diese muss dann q_rep1 sein. Wennn in Abhängigkeit zu diesem Band eine 1:n Beziehung dargestellt werden soll, verwendet man ein Band vom Typ Detaildaten. Dieser muss man beim Anlegen ebenfalls eine Datenquelle zuweisen.

Für ausführliche Infos können Sie auch unter http://www.fast-report.com/en/download/ ... php?BID=17 nachschauen. Da gibt es auch ein kleines Demoprogramm, wo Sie einfache Reports anschauen können.

mfg SYN14
It's not a bug.
It's a feature.
Gast

Beitrag von Gast »

Neues Problem mit alter Stückliste. Wir wollen ein Sachmerkmal(Feld Inhalt in der Tabelle BPROBBSA) eines Artikels, mit ausgedruckt auf der "Stückliste aufgelöst" haben. Ich habe auch mit Ib Expert die Tabelle gefunden in der das Sachmerkmal hinterlegt. Sie heist BPROBBSA. Wenn ich nun diese Tabelle mittels query in dem Druckformular einfüge nimmt er einen x-beliebigen Wert aus selbiger. Ist auch verständlich weil die Id nicht mehr übereinstimmt. Die Id steht jetzt in dem Feld BSA_ID_Linkkey. Ich müsste also jetzt irgend eine Abfrage in dem Designer erstellen. Könnte mir jemand ein Beispiel für diesen Fall erstellen, damit ich beim nächsten Fall gerüstet bin. Ist es besser dies direkt im Designer zu erstellen oder mittels SQL Befehl in der Query zu tun??

MFG
Pete
Gast

Beitrag von Gast »

Noch ne Frage, weil ich gerade versuche mein obiges Problem zu lösen.
Ich möchte gerne mittels einer Schleife im Designer durch eine Tabelle der Datenbank gehen.
Meine Delphi Kenntnisse sind etwas eingerostet...
Ich habs versucht mit
q_rep20.first;
While not q_rep20.eof do .....
Leider steigt er mit einer Fehlermeldung aus, dass q_rep20.eof nicht stimmt. Ich denke mal das meine Anweisung falsch ist.... :D

2.Frage q_repXX ist doch nur eine Variable für die Tabelle im Designer?
Gast

Beitrag von Gast »

Will mir keiner helfen ?? :?
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

Beitrag von SYN14 »

Es ist für mich schwer nachvollziehbar, warum Sie
mittels einer Schleife im Designer durch eine Tabelle der Datenbank gehen
wollen. Das würde doch FastReport für Sie erledigen.

mfg SYN14
It's not a bug.
It's a feature.
Gast

Beitrag von Gast »

Bisher nicht , jedenfalls nimmt er sich irgend einen Wert heraus.
Ich war mir auch nicht sicher was sinnvoller ist, eine Sql Anweisung im Objectinspector oder eine Anweisung per Delphi im FastREPORT.
Wie gesagt ich möchte eigentlich nur den "Inhalt"(FELD) in der Tabelle BPROBBSA auslesen mit dem dazugehörigen Maskenkey aus dem Artikelstamm. Was er mir bisher nicht macht.
Gast

Beitrag von Gast »

Ich möchte nochmal das Problem Schildern:
Also...
Ich möchte in dem Druckformular "Struckturliste aufgelöst" ein Sachmerkmal mit ausgedruckt haben. Dieses Sachmerkmal befindet sich in der Tabelle BPROPBSA im Feld "INHALT". Wenn ich nun mittels Sql Befehl im Objektinspektor in den Query diese Tabelle einfüge und anschließend im Formular einfüge, nimmt er leider eine Eintrag aus der Tabelle BPROPBSA der nicht zu der aktuellen Strukturliste die ich ausgedruckt haben möchte passt. Sprich Die ID aus der Tabelle BSA und die BSA_ID_LINKKEY aus der Tabelle BPROPBSA stimmen nicht überein.
Ich möchte also wissen wie ich FastReport sagen kann das er den Inhalt mit der dazugehörigen richtigen BSA_ID benutzt.
Hoffe das war exakt genug den ich versuche mich daran schon eine ganze Weile und möchte endlich eine Lösung haben :D

MFG
PEte
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

Beitrag von SYN14 »

Dann will ich mal versuchen Ihnen ein schönes Wochenende zu ermöglichen :D

Ich gehe einfach davon aus, dass Sie das Sachmerkmal zu der Stücklistenposition (dies ist die q_rep3) angedruckt bekommen wollen.

Dazu müssen Sie eine neue Querry (z.B. q_rep4) benutzen. Diese soll den Inhalt der Tabelle (im Ausdruck besser die View verwenden, da wesentlich mehr Informationen enthalten sind) V_BPROPBSA enthalten. Also in der Eigenschaft SQL folgendes hinterlegen:

Code: Alles auswählen

SELECT * FROM V_BPROPBSA
Jetzt muss noch die Verknüpfung zu den Stücklistenpositionen hergestellt werden. Dazu werden zwei weiter Eigenschaften der Querries in AvERP benutzt: MasterSource und MasterLinks

MasterSource gibt dabei an, von welcher Datenquelle die Querry abhängig sein soll. Deshalb muss dieser Eigenschaft der Wert d_rep3 zugewiesen werden. d_rep3 ist die Datenquelle für die q_rep3.

Jetzt sind zwar die Querries verknüpft, es ist aber nicht angegeben, über welches Feld diese miteinander verknüpft sind. Dafür ist die Eigenschaft MasterLinks zuständig. Die Syntax für diese Eigenschaft ist immer

Code: Alles auswählen

[Zielfeld]=[Quellfeld]
In diesem Beispiel wäre es dann

Code: Alles auswählen

BSA_ID_LINKKEY=BSA_ID_ARTNR
Wenn jetzt die Querry und die DataSource im Fastreport richtig eingebunden werden, sollten auch die Felder der V_BPROPBSA in der Feldliste angezeigt werden.

Da es aber zu einer Artikel ID mehrere Sachmerkmale geben kann, muss ein neues Band im Ausdruck eingefügt werden. Als Typ muss "Detailband" verwendet werden, da es sich um eine 1:n Beziehung handelt. Als Datenquelle muss fr_rep4 verwendet werden. Dann noch die gewünschten Felder auf dem Band einfügen. Thats all.

mfg SYN14
It's not a bug.
It's a feature.
Gast

Beitrag von Gast »

Es ist zum verzweifeln :cry:, hab es jetzt eine Std versucht nach ihrem BSP vorzugehen, ohne Erfolg. Die Einzelnen Felder werden in der Query 4 angezeigt, jedoch wenn ich ein Datenband(ich hoffe das is der Punkt DB-Feld erzeugen) angelegt habe und die einzelnen Felder eingefügt habe wird nichts angezeigt aus der Tabelle BPROPBSA. Ich habe auch nicht gefunden, wo ich das Datenband als Detailband definieren kann.

Liegt es vllt daran das die Sachmermale ja in der Tabelle BSA definiert werden, also dem Artikelstamm??
SYN14
Beiträge: 216
Registriert: Do Jun 17, 2004 8:08 am

Beitrag von SYN14 »

Die Sachmerkmale werden nur in der Maske BSA angezeigt (und können dort auch bearbeitet werden) aber gespeichert werden die Daten in der Tabelle BPROPBSA.

Ein neues Band können Sie nur über die Toolbar einfügen. Dort gibt es das Icon "Bereich einfügen". Dann müssen Sie das Band auf der Arbeitsfläche plazieren und die Datenquelle anschließend angeben.
It's not a bug.
It's a feature.
Antworten