Supportnet / Forum / Datenbanken
Die 3Preise Problem Frage
Frage
Also erstmal Hallo zusammen,
Ich habe vollgendes Problem. Ich habe eine ArtikelNr eine Artikelbezeichnung und zu jedem Artikel habe ich 3 ab und zu sogar 4 Preise.
Dieses Problem habe ich versucht über die SQL Abfrage zu lösen und zwar so in der einen Listbox habe ich volgendes als Datensatzherkunft angegeben :
SELECT DISTINCTROW tblGruppe.wasid, tblGruppe.gruppe FROM tblGruppe;
und in der zweiten Listbox habe ich volgendes in der Datensatzherkunft angegeben:
SELECT DISTINCTROW tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid FROM tblUntergruppe GROUP BY tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid HAVING (((tblUntergruppe.wasid)=[forms]![frmWinWordDemoAdresse]![cb1]));
Das alles funktioniert auch alles schön und gut. Nur das Problem bei der Ausgabe an WinWord wird statt Gruppe wird mir die Id angezeigt. Wenn ich aber die Reihenfolge in SQL ändere bzw in der SQL Anweisung. Dann spuckt er mir in Winword die Gruppe aus aber in der Access Oberfläche stehen jetzt die Zahlen drinnen. Ich weiß einfach keinen Rat mehr. Ich hoffe das ich in diesem Forum hilfe bekomme.
Danke im Vorraus
Antwort 1 von disco
moin
versteh dein problem jetzt nicht so ganz. hab auch keine erfahrungen mit office anwendungen auf datenbanken.
du lässt also dein result der anfrage irgendwo ausgeben. und in dieser ausgabe wird dir statt der gruppe die id angezeigt?!
soweit richtig?
wenn du das statement jetzt änderst, also die spalte mit dem namen nach vorne brings, bekommst du in word den gruppennamen angezeigt, aber in access wird immer noch die id angezeigt?!
g,
disco
versteh dein problem jetzt nicht so ganz. hab auch keine erfahrungen mit office anwendungen auf datenbanken.
du lässt also dein result der anfrage irgendwo ausgeben. und in dieser ausgabe wird dir statt der gruppe die id angezeigt?!
soweit richtig?
wenn du das statement jetzt änderst, also die spalte mit dem namen nach vorne brings, bekommst du in word den gruppennamen angezeigt, aber in access wird immer noch die id angezeigt?!
g,
disco
Antwort 2 von derparnia
fast alles richtig. Ich verusche es mal mit einem Beispiel zu erklären.
Also ich habe zwei Listenfelder. in dem ersten kann man auswählen zwischen Hardware (ID=1) und Software (ID=2)
und im zweiten kann man wenn man Hardware ausgewählt hat zwischen CPU(ID=5) und Grafikkarte(ID=6) auswählen
Soweit so gut. Das alles funktioniert auch. Nun möchte ich es aber an Word ausgeben. Jetzt erscheint aber in Word statt Hardware und CPU die ID´s 1 und 5
Ändere ich jetzt in der SQL- Anweisung die Plätze. Dann wird an Word der Name ausgegeben. Aber in der Access Oberfläche Stehen jetzt im Listenfeld die Zahlen drinnen. Also grad das umgekehrte Problem.
Also ich habe zwei Listenfelder. in dem ersten kann man auswählen zwischen Hardware (ID=1) und Software (ID=2)
und im zweiten kann man wenn man Hardware ausgewählt hat zwischen CPU(ID=5) und Grafikkarte(ID=6) auswählen
Soweit so gut. Das alles funktioniert auch. Nun möchte ich es aber an Word ausgeben. Jetzt erscheint aber in Word statt Hardware und CPU die ID´s 1 und 5
Ändere ich jetzt in der SQL- Anweisung die Plätze. Dann wird an Word der Name ausgegeben. Aber in der Access Oberfläche Stehen jetzt im Listenfeld die Zahlen drinnen. Also grad das umgekehrte Problem.
Antwort 3 von derparnia
Ich kann dir auch die Access Datenbank schicken ist glaub ich einfacher es dir anzuschauen als es hier zu erklären
Antwort 4 von disco
das würd nich viel bringen, kenn mich zwar mit SQL aus, aber hab noch nie was mit access gemacht.
schreib hier einfach mal die relevanten tabellen, und spalten rein. und was du genau für ein ergebnis ahben möchtest.
ungefär so:
tabelle1=
{
spalte1
name
id
}
tabelle2=
{
bla
spalte2
usw.
}
schreib hier einfach mal die relevanten tabellen, und spalten rein. und was du genau für ein ergebnis ahben möchtest.
ungefär so:
tabelle1=
{
spalte1
name
id
}
tabelle2=
{
bla
spalte2
usw.
}
Antwort 5 von derparnia
Ok dann schreibe ich mal die wichtigten Tabellen hin
tblGruppe=
wasid gruppe
1 hardware
2 software
3 dienstleistung
tblArtikel=
text1 untergruppeid artikelid
233mmx cpu 1
win98 betriebssystem 2
....etc
tblUntergruppe=
untergruppeid text1 wasid
1 mainboard hardware
2 cpu hardware
5 ae-technik dienstleistung
9 office anwendung software
...etc
Alle tabellen sind miteinander Verknüpft.
Es gibt 3 Listenfelder mit einem Dropdown Menu.
Wo man z.B.: im ersten Listenfeld (namedeslistenfeldes=cb1): Hardware im zweiten Listenfeld (namedeslistenfeldes=cb2): CPU und im dritten Listenfeld (namedeslistenfeldes=cb3): 233mmx auswählen kann.
im ersten Listenfeld(cb1) steht folgende Anweisung:
SELECT DISTINCTROW tblGruppe.wasid, tblGruppe.gruppe FROM tblGruppe;
im zweiten Listenfeld(cb2) steht folgende Anweisung:
SELECT DISTINCTROW tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid FROM tblUntergruppe GROUP BY tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid HAVING (((tblUntergruppe.wasid)=[forms]![frmWinWordDemoAdresse]![cb1]));
und im dritten Listenfeld(cb3) steht folgende Anweisung:
SELECT DISTINCTROW tblArtikel.artikelid, tblArtikel.text1, tblArtikel.untergruppeid FROM tblArtikel WHERE (((tblArtikel.untergruppeid)=[forms]![frmWinWordDemoAdresse]![cb2]));
Also ich möchte einfach das der in Listenfeld ausgewählte Inhalt sowohl in Access als auch in Word angezeigt wird und nicht die ID´s.
Ich hoffe ich habe es richtig aufgelistet.
und danke für deine Hilfe
Gruss
derparnia
tblGruppe=
wasid gruppe
1 hardware
2 software
3 dienstleistung
tblArtikel=
text1 untergruppeid artikelid
233mmx cpu 1
win98 betriebssystem 2
....etc
tblUntergruppe=
untergruppeid text1 wasid
1 mainboard hardware
2 cpu hardware
5 ae-technik dienstleistung
9 office anwendung software
...etc
Alle tabellen sind miteinander Verknüpft.
Es gibt 3 Listenfelder mit einem Dropdown Menu.
Wo man z.B.: im ersten Listenfeld (namedeslistenfeldes=cb1): Hardware im zweiten Listenfeld (namedeslistenfeldes=cb2): CPU und im dritten Listenfeld (namedeslistenfeldes=cb3): 233mmx auswählen kann.
im ersten Listenfeld(cb1) steht folgende Anweisung:
SELECT DISTINCTROW tblGruppe.wasid, tblGruppe.gruppe FROM tblGruppe;
im zweiten Listenfeld(cb2) steht folgende Anweisung:
SELECT DISTINCTROW tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid FROM tblUntergruppe GROUP BY tblUntergruppe.untergruppeid, tblUntergruppe.text1, tblUntergruppe.wasid HAVING (((tblUntergruppe.wasid)=[forms]![frmWinWordDemoAdresse]![cb1]));
und im dritten Listenfeld(cb3) steht folgende Anweisung:
SELECT DISTINCTROW tblArtikel.artikelid, tblArtikel.text1, tblArtikel.untergruppeid FROM tblArtikel WHERE (((tblArtikel.untergruppeid)=[forms]![frmWinWordDemoAdresse]![cb2]));
Also ich möchte einfach das der in Listenfeld ausgewählte Inhalt sowohl in Access als auch in Word angezeigt wird und nicht die ID´s.
Ich hoffe ich habe es richtig aufgelistet.
und danke für deine Hilfe
Gruss
derparnia
Antwort 6 von disco
wie gesagt. kein plan von wor und access. aber wie ich dein problem jetzt verstehe. bekommst du mit dem gleichen sql-statement zwei verschiedene ergebnisse.
das kann ja so nicht sein
ich vermute jetzt erstmal, dass du die ergebnisse unterschiedlich verarbeitest/auswertest.
kannste mal in den beiden programen gucken, ob du dir auch die gleichen sachen aus dem result ziehst?
ich schau mir auch mal deine tabellen an
das kann ja so nicht sein
ich vermute jetzt erstmal, dass du die ergebnisse unterschiedlich verarbeitest/auswertest.
kannste mal in den beiden programen gucken, ob du dir auch die gleichen sachen aus dem result ziehst?
ich schau mir auch mal deine tabellen an
Antwort 7 von derparnia
Also wenn ich hardware, CPU und 233mmx auswähle dann erscheint in Word die Zahlen 1, 2 und 1. Also immer derren ID´s mit welchen die Tabellen miteinander verknüpft sind.
Antwort 8 von disco
sorry.
ich kann mir das auch gerade auch nur schwer bildlich vorstellen, da ich nichts mit office am hut habe. und deine probleme haben wohl nichts mit der DB oder dem Statement zu tun, sondern eher mit dem aufruf, bzw. der anzeige im word.
wenn da jetzt nicht noch was von jemand anderen kommt solltest du die frage vielleicht morgen mal neu stellen, da durch die vielen antworten, die wir produziert haben, die chance klein geworden ist, dass hier noch wer weiterliest.
viel glück noch
ich kann mir das auch gerade auch nur schwer bildlich vorstellen, da ich nichts mit office am hut habe. und deine probleme haben wohl nichts mit der DB oder dem Statement zu tun, sondern eher mit dem aufruf, bzw. der anzeige im word.
wenn da jetzt nicht noch was von jemand anderen kommt solltest du die frage vielleicht morgen mal neu stellen, da durch die vielen antworten, die wir produziert haben, die chance klein geworden ist, dass hier noch wer weiterliest.
viel glück noch
Antwort 9 von derparnia
Hmm also liegt es an der Ausgabe die an Word ausgegeben wird. Habe dir als letztes funken Hoffnung. Einen teil des Quelltext der Ausgabe hier reinkopiert. Vielleicht hilft es dir ja doch nocht. Wenn nicht will ich mich an dieser Stelle nochmals bei dir Bedanken das du dir die Zeit genommen hast mir zu helfen.
Gruss
derparnia
Gruss
derparnia
Option Compare Database
Option Explicit
´Aufruf:
´Diese Maske muß aus einer "Hauptmaske" heraus aufgerufen werden. Diese Hauptmaske muss alle Felder,
´die an WinWord übergeben werden sollen, enthalten.
´
´Der Aufruf muß als Openargs den Namen der "Hauptmaske" enthalten.
´Aufruf:
´ DoCmd.OpenForm "frmWinWord aufrufen", , , , , , Me.Name
Private Sub btnWinWord_Click()
Dim appWd As Word.Application
Dim WordDoc As Word.DOCUMENT
Dim Nix
Dim ctl As Control
Dim db As Database
Dim rst As Recordset
Dim rst1 As Recordset
Dim STextmarke As String
Dim SFeldName As String
Dim SMuss As Boolean
With appWd
´ Vorlage als Dokument öffnen
.Documents.Add Template:=Chr(34) & Me!Vorlage & Chr(34)
´ Textmarken / Feldnamen aus Tabelle "tblWordBrfSetup" einlesen, alle Textmarken durchlaufen
´ Messagebox, wenn Textmarke fehlt, sie aber als MUSS deklariert ist.
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT * FROM tblWordBrfSetup;", dbOpenDynaset)
Do While Not rst.EOF
rst.Edit
STextmarke = rst.Fields(0)
SFeldName = rst.Fields(1)
SMuss = rst.Fields(2)
If SMuss = True And .ActiveDocument.Bookmarks.Exists(STextmarke) = False Then
Nix = MsgBox("Textmarke " & STextmarke & " fehlt", vbCritical + vbOKCancel, "Textmarke ist Pflicht")
If Nix = vbCancel Then
.Quit (wdDoNotSaveChanges)
Exit Sub
End If
End If
If .ActiveDocument.Bookmarks.Exists(STextmarke) = True Then
If ControlExist(Forms(Me.OpenArgs), SFeldName) Then
.ActiveDocument.Bookmarks(STextmarke).Select
.Selection.InsertAfter Nz(Forms(Me.OpenArgs)(SFeldName))
Else
Nix = MsgBox("Feldname " & Chr(34) & SFeldName & Chr(34) & " falsch / fehlerhaft", vbCritical + vbOKCancel, "Feldname fehlt, Maske: " & Forms(Me.OpenArgs).Name)
If Nix = vbCancel Then
.Quit (wdDoNotSaveChanges)
Exit Sub
End If
End If
End If
´ rst.Update ´Kein Update erforderlich, da nur lesend
rst.MoveNext
If rst.EOF Then Exit Do ´ für den Fall, daß wir uns auf dem letzten Datensatz befinden
Loop
rst.Close

