PDA

Vollständige Version anzeigen : Problem mit Kombifeld


Sonne im Herz
06.10.2001, 16:32
Hallo zusammen.

Hab 1 Tabelle mit den Artikeldaten und der "Artikel-Nr".
Hab auch noch eine kleine 2. Tabelle mit den Kundendaten und auch mit dem Feld "Artikel-Nr".

Möchte jetzt sehr gerne im Artikelformular ein Kombifeld haben, aber Achtung:

1.)
Soll nur Werte aus Tabelle "Kundendaten" anzeigen wenn der Inhalt der Felder Ártikeldaten.Artikel-Nr = Kundendaten.Artikel-Nr gleich ist.

2.)
Soll dann in dem Kombifefd (oder in 2 seperaten Feldern) Firma und Zeichnungs-Nr anzeigen.

3.)
Und wenn ich neue Firma und Zeichnungsnummer habe, möchte ich diese gerne hier einfügen. Wenn dies nicht geht, dann über ein kl. Formular, aber die "Artikel-Nr" sollte automatisch eingefügt werden.

So ganz schöner Hammer, was.
Bin über jeden Kommentar dankbar.

Ich schaff es nicht, eure
Sonne im Herz

MarioR
06.10.2001, 17:30
Hallo,

zumindest zu Punkt 1 und 2 erstmal eine Antwort.

Als Herkunftstyp des Kombifeldes stellst Du Tabelle/Abfrage ein. Und als Datensatzherkunft folgenden SQL-String:
SELECT DISTINCTROW Firma, [Zeichnungs-Nr] FROM Kundendaten WHERE [Artikel-Nr]=[Formulare]![Artikelformular]![TextfeldMitArtikelNr];

In die Ereignisprozedur zum Ereignis Beim Anzeigen des Formulars kommt noch Folgendes rein:
Me.DeinKombifeld.Requery

Sonne im Herz
06.10.2001, 19:04
Hi Mario

vielen Dank, hat schon was gebracht, aber:

es erscheinen immer 2 Felder, in denen ich Parameterwerte eingeben soll, und dann zeigt er mir erst die Werte im offenen Kombifeld an. Wenn ich aber den Wert im Kombifeld bestätige, dann steht nur der 1. Wert im Feld. Bräuchte den 1. Wert und einen 2. Wert (Firmen_Zr und Firma)

Hab ich was falsch gemacht?

Ach ja, mein SQL:

SELECT DISTINCTROW Firmen_nr.Firma, Firmen_nr.Firmen_nr, Firmen_nr.Z_nr, Federkarteikarten.Z_Nr
FROM Firmen_nr RIGHT JOIN Federkarteikarten ON Firmen_nr.Z_nr = Federkarteikarten.Z_Nr
WHERE (((Firmen_nr.Z_nr)=[formular]![Federnkarteikarten]![Z_nr]));

Ist da irgend etwas Falsch, denn das nach dem Where kommt immer in dem Fenster der Parameterabfrage.

Gruß

Sonne

MarioR
06.10.2001, 20:53
Hallo,

erstmal hab ich noch was vergessen. Wenn Du mehr als 1 Spalte sehen willst, muss das Acc natürlich wissen. Also unter Eigenschaften des Kombifeldes unter Spaltenanzahl 2 einstellen. Eventuell musst Du die Reihenfolge der Felder im SQL-String umstellen. Unter Spaltenbreiten kommen die einzelnen Breiten rein (bei mir steht da z.B. 2,54cm;2,54cm).

Beim SQL-String seh ich jetzt hinter dem Where zumindest einen Fehler. Es müsste irgendwas in der Form
... =[Formulare]![Formularname]![Textfeld]));
da stehen. Formularname ist der Name des Formulars, wo die DS aus der Tab Federnkarteikarten angezeigt werden. Textfeld ist der Name des Formularfeldes, das mit dem Tab-Feld Z_Nr verknüpft ist. Das müsstest Du mal überprüfen.

Kannst Du mal posten, welche Parameter Acc wissen will (also was genau im Dialogfeld geschrieben steht)?

Sonne im Herz
07.10.2001, 10:26
Die Spaltenanzahl ist bekannt, wird angezeigt, wenn ich F4 gedrückt habe(bei mir sind es 3 Spalten und 8 Zeilen).
wenn ich einen wert ausgesucht habe, erscheint der 1. Wert der 3 Spalten im Kombifeld und sonst nichts mehr.

Zu dem Fenster.
Leistentext: Parameterwert eingeben
über dem Eingabefeld steht: Formulare!Federkarteikarten!Z_Nr

Tabelle und Formular haben die gleiche Namensgebung (schlecht, ich weis es), Feldnamen sind ebenfalls gleich.

Gruß
Sonne

Noch was, die Parameterabfrage kommt 3-mal, beim Formular öffnen und 2-mal hintereinander beim Datensatz anzeigen, nur wenn ich immer die gleiche Z_Nr eingebe, erscheinen die Werte im Kombifeld.

MarioR
07.10.2001, 13:44
Prüf nochmal die Namen, ich glaub, Du hast da einen Schreibfehler:
=[Formulare]![Federkarteikarten]![Z_nr]));

Ich hab das bei mir mal nachgebaut. Wenn ich Deinen SQL-String kopiere und den Schreibfehler korrigiere, stehen im Kombifeld die entsprechenden Daten.

Sonne im Herz
07.10.2001, 18:32
OK, hatte einen Tippfehler, jetzt tut's.

Aber ich hab 3 Spalten bei der Auswahl, aber nachher nur noch den 1. Spaltenwert.
Beispiel:
Firma, Firmeninterne Z-Nr, Z-Nr

Opel,M 0506002, #118
Festo, 236 711, #118
Ford, 23763/23, #118

jetzt seh ich dann nur Opel, aber nicht Opel M 0506002.
Kann ich nicht beides in einem Kombifeld sehen, oder muß ich für die Firmeninterne Z-Nr ein eigenes Feld machen.

MarioR
08.10.2001, 06:07
Also wenn das Kombifeld mit F4 die Spalten anzeigt, müsste das auch funktionieren.

Kannst Du mal den SQL-String nehmen und in eine neue Abfrage kopieren. Dann prüfst Du mal, ob die Abfrage (bzw. der SQL-String) überhaupt Daten liefert.

Übrigens versteh ich auch nicht, warum Du die Tabellen überhaupt verknüpfst. IMHO müsste Folgendes ausreichen:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre>SELECT DISTINCTROW Firmen_nr.Firma, Firmen_nr.Firmen_nr, Firmen_nr.Z_nr
FROM Firmen_nr WHERE (((Firmen_nr.Z_nr)=[Formulare]![Federkarteikarten]![Z_nr]));</pre></div>

Sonne im Herz
08.10.2001, 16:30
Hi Mario

ich glaube wir haben da aneinander vorbeigeredet.
Zuerst einmal das mit der Verknüpfung, du hast natürlich recht, ist quatsch aber was solls, tut ja auch so. Oder muß ich das rausmachen?

So und nun DAS Problem:

ich gehe in mein Kombifeld. Gebe dort den Firmenname ein (z.B. Opel) dann erscheint auch Opel, ist klar. wenn ich aber im Kombifeld bin und F4 drücke, sehe ich die Liste mit allen Firmen und Firmen-Nr, welche zu meiner Z-Nr passen. Nun kann ich natürlich auch Opel aussuchen, aber ich will, das wenn ich Opel ausgesucht habe nicht nur Opel im (verlassenen) Kombifeld steht, sondern bitte auch die Firmen-Z-Nr (z.B. für Opel M0506002).
Wenn so etwas nicht geht, wie kann ich dann die dazugehörige Firmen-Z-Nr in einem anderen Feld automatisch anzeigen lassen?

Schwer, gell.

Messi: Mulisoft@hotmail.com oder AOL: mulisoft666

Gruß Sonne

MarioR
08.10.2001, 19:18
Achsooooooooo, und ich brech mir hier Einen weg ... ;)

AFAIK geht das mit einem Kombifeld nicht.

Eine Lösung wäre, die Firmen-Z-Nr in ein Textfeld zu übertragen. Dazu schreibst Du beim Ereignis Beim Klicken vom Kombifeld Folgendes rein:
Me.txtFirmenZNr=Me.Kombifeld.Column(1)

Wenn Du jetzt im Kombifeld auf einen Eintrag klickst, steht die Firma im Kombifeld und die Firmen-Z-Nr im Textfeld txtFirmenZNr. Die Z-Nr steht ja schon im Formular im Textfeld Z_Nr.


In der Zwischenzeit ist mir auch zu Deinem 3. Problem was eingefallen. Ich würde vorschlagen, dass neue Daten über einen Button angefügt werden. In das Ereignis Beim Klicken schreibst Du dann Folgendes rein:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Dim</span> rs <span class="TOKEN">As</span> Recordset
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(Me.Kombifeld) <span class="TOKEN">And</span> <span class="TOKEN">Not</span> IsNull(Me.txtFirmenZNr) <span class="TOKEN">Then</span>
<span class="TOKEN">Set</span> rs = CurrentDb.OpenRecordset("Firmen_nr")
rs.AddNew
rs!Firma = Me.Kombifeld
rs!Firmen_nr = Me.txtFirmenZNr
rs!Z_nr = Me.Z_nr
rs.Update
rs.Close
<span class="TOKEN">Set</span> rs = <span class="TOKEN">Nothing</span>
Me.Kombifeld.Requery
<span class="TOKEN">End</span> <span class="TOKEN">If</span></pre></div>

So. Probier mal aus, ob das so geht. :)

Sonne im Herz
09.10.2001, 14:47
C O O L

Danke Mario, habs zwar noch nicht probiert, weil ich noch an einem anderen Problem arbeit, aber ich denke es sieht gut aus.

Frage: wenn ich im kombifeld einen wert ausgesucht habe, un dehe in den nächsten Datensatz, bleibt der Wert trotzdem im Kombifeld, das darf er aber doch gar nicht.

Wie setze ich das wider auf leer?

Gruß
Sonne

MarioR
09.10.2001, 18:49
Nichts leichter als das ...

Im Ereignis Beim Anzeigen schreibst Du noch rein:
Me.Kombifeld=Null
Me.txtFirmenZNr=Null

Sonne im Herz
15.10.2001, 19:32
Hallo

Ist ja alles gar nicht so schlecht, aber zum neu eingeben schwebt mir so was vor bie zum suchen in meiner Db.
so etwa:

Private Sub cmdSearch_AfterUpdate()
' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
Dim rs As Object
Me.Refresh
Set rs = Me.RecordsetClone ' wegen unverträglichkeit von Me.Recordset.Clone bei Acc97 auf Me.RecordsetClone gesetzt (XP -> 97)
rs.FindFirst "[Z_Nr] = '" & Me![cmdSearch] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
If rs.NoMatch Then
If MsgBox("Neu anlegen", 33, "Frage") = 2 Then GoTo weiter
' rs = UCase(Me!cmdSearch)
rs.AddNew
rs.Fields("[Z_Nr]") = Me!cmdSearch
rs.Update
Me.Requery
rs.FindFirst "[Z_Nr] = '" & Me![cmdSearch] & "'"
Me.Refresh
acNewRec
End If
weiter:
Me.Bookmark = rs.Bookmark
Me.Firma.SetFocus
End Sub

Bekomm das aber nicht so hin, bin halt noch blutiger Anfänger.

Danke Sonne

Sonne im Herz
15.10.2001, 19:36
Ach da war ja noch was.

Wenn der Datensatz nicht vorhanden ist, wird ein Form geöffnet und die Zeichnungsnummer automatisch eingefügt, ebenso im Unterformular die soeben eingegebene Firmen-Z-Nr.
Jetzt muß ich nur noch die irma eingeben.
Funzt alles soweit prima, aber wie komme ich nun wieder aus dem UFo heraus, dann das Form wieder schließen und zurück in mein erstes Form, wort wo ich stehen geblieben bin.

Wäre super mit z.B. F1 drücken um weiter zu machen, oder F11.

Sonne im Herz
15.10.2001, 19:48
Oh man, sehe gerade ich hab ja noch einen Hammer auf lager.

Wenn ich mein 2 Formular öffnen lasse, springt er mir nicht automatisch in den Datensatz in dem ich schon bin.

habe

docmd.openform "firmenznr", acnorma, "","[federkarteikarten_z_nr]=[forms]![federkarteikarten].[z_nr]

das Form wird zwar geöffnet, aber der Datensatz für mit der gleichen Z_Nr wie im 1. Form wird nicht angesteuert.

was ist falsch?

ich blicks nicht mehr

Sonne