Probleme mit DataReport und DataEnvironment

Andreas Dunstheimer

Erfahrenes Mitglied
Hallo,

ich bin gerade dabei, für meine Kundenverwaltung einen Ausdruck zu programmieren; bekomme es aber irgendwie nicht hin. :(

Ich habe zwei Tabellen in einer Access-DB (nennen wir sie einfach mal "Kunden" und "Termine") und beide sind über eine Relation verbunden:

Kunden.ID -> Termine.KundenID

Über ein DataEnvironment habe ich eine Verbindung zu diesen beiden hergestellt.


Fragen:
1.) Wie genau muss das in dem DataEnvironment aussehen, daß ich auf die Felder beider Tabellen zugreifen kann? (Wahrscheinlich irgendwie mit untergeordneten Commands, kriegs aber nicht hin)

2.) Wie stelle ich es in dem DataReport an, daß die Daten aus der Tabelle "Kunden" im Berichtskopf, und die Daten aus der Tabelle "Termine" im Detailbereich angezeigt werden? Per Drag&Drop lässt er mir den Berichtskopf nicht zu.

Das ganze soll nachher so aussehen, daß ich im Programm einen Kunden zum Bearbeiten auswähle und von diesem dann eine Art Karteikarte ausdrucke. Diese soll im Berichtskopf die Daten aus der Tabelle "Kunden" enthalten, und dann evtl. über mehrere Seiten alle Termine aufgelistet, die zu diesem Kunden gehören.
Die KundenID habe ich als Variable und würde diese dann gerne an den DataReport übergeben, aber wie?

Kennt vielleicht jemand ein gutes Tutorial zu diesem Thema?


Dunsti
 
ok, ich habs nun soweit hinbekommen, daß im Report ein Kunde mit all seinen Terminen angezeigt wird. (Kundendaten im GroupHeader und Termindaten in Detail)

Was mir noch fehlt:

ich will dem DataEnvironment zur Laufzeit eine andere Datenbank und ein anderes SQL-Kommando übergeben (WHERE ID= ...)
Ich habe es so probiert:
Code:
DataEnv.Cn.ConnectionString = "Provider=MSDataShape.1;Persist Security Info=False;Data Source=" + DB_Name + ";Data Provider=MICROSOFT.JET.OLEDB.4.0"
DataEnv.Cn.Open
DataEnv.Cn.Execute "SHAPE {SELECT * FROM Kunden WHERE ID=" + CStr(KundenID) + "}  AS Kunden APPEND ({SELECT * FROM Termine}  AS Termine RELATE 'ID' TO 'KundenID') AS Termine"

Bekomme aber ständig die Fehlermeldungen "Unzulässige SQL-Anweisung" - komischerweise klappt es einmal und beim zweiten mal kommt der Fehler. :(

noch ein Problem:
Wenn ich neue Termine hinzufüge, werden diese im Report erst nach einem Neustart des Programms angezeigt. Gibt es eine Möglichkeit, den Report während der Laufzeit zu aktualisieren?


Dunsti

PS: Allen Frohe Weihnachten ;)
 
Datareport

Damit die Daten im Datareport aktualisiert angezeigt werden muß du den Datareport vom Command abhängen (mit close) und neu verbinden. Ich zeig Dir ein Beispiel:

If DataEnvironment1.rsCommandQueryZeiteneingabe_Grouping.State = adStateOpen Then
DataEnvironment1.rsCommandQueryZeiteneingabe_Grouping.Close
End If
' Reopen the recordset with the input parameter supplied by
'
'Diese Zeile übergibt dem CommandQuery einen Parameter, einfach der Reihe nach eingeben (es könnten ja mehrere sein), ohne Komma getrennt!

DataEnvironment1.CommandQueryZeiteneingabe_Grouping strCurrentUser



With Rpt_Statistik

.DataMember = "CommandQueryZeiteneingabe_Grouping"
Set .DataSource = DataEnvironment1
End With

Rpt_Statistik.WindowState = vbMaximized

'Rpt_Statistik.show brauchst Du nicht, da durch WITH automatisch der Report geladen wird. Ist irgendwie Sch....aber naja...

Hoffe geholfen zu haben
 

Neue Beiträge

Zurück