Juni 15, 2021, 22:07:20

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Kominationsfeld

Begonnen von Raffnix2013, Juni 09, 2021, 22:06:21

⏪ vorheriges - nächstes ⏩

Raffnix2013

Guten Abend,
ich scheitere bereits bei der korrekten Fragestellung!
Es geht um die Funktion der Abhängigkeit eines Kominationsfeldes von einem anderen, innerhalb eines Formulares.
Die Daten kommen aus einer Tabelle mit 10 Zeilen und 50 Spalten.
Das erste Kombifeld selectiert Zeile n mit Spalte1. Im zweiten Kombifeld möchte ich nun nur die Spalten 1-50 sehen, von der im vorherigen Kombifeld gewählten Zeile.

Kann mir jemend eine Tip geben, bzw. gibt es evtl. einen Thread dazu?

MzKlMu

Gruß
Klaus

DF6GL

Juni 10, 2021, 08:50:45 #2 Letzte Bearbeitung: Juni 10, 2021, 08:54:49 von DF6GL
Hallo,


@Raffnix2013:

was ist das Ziel der Geschichte? Es sind hierfür keine zwei Kombifelder nötig.

ZitatIm zweiten Kombifeld möchte ich nun nur die Spalten 1-50 sehen

WO genau? Im Kombi-Textfeld oder im Kombi-Listenfeld?

Was geschieht mit der anschließend mit der Auswahl?

Einfachste Variante:


1) Kombifeld mit 50 Spalten und entspr. eingestellten Spaltenbreiten und Listenbreite.
Datensatzherkunft: Select Sp1, Sp2, Sp3, Sp4, ...... from tblTabelle order by Sp1


2) Kombifeld mit 1 Spalte und einer Spaltenbreite, die alle 50 Spalten-Daten anzeigen kann.
Datensatzherkunft:  Select  Sp1 & ";" & Sp2 & ";" &  Sp3 & ";" &  Sp4 & ";" &   ...... from tblTabelle order by Sp1


3) Anzeige der 50 Spalten mit zusätzlichen 49 Textfeldern und Steuerinhalt wie nachstenend:

Kombifeld ("cmbSp1") mit 1 Spalte und angepasster Spaltenbreite und Listenbreite.
Datensatzherkunft:   Select Sp1, Sp2, Sp3, Sp4, ...... from tblTabelle order by Sp1


Steuerelementinhalt bei
Textfeld1: = cmbSp1.Column(1)
Textfeld2: = cmbSp1.Column(2)
Textfeld3: = cmbSp1.Column(3)
Textfeld4: = cmbSp1.Column(4)
.
.
.
.
Textfeld49: = cmbSp1.Column(49)



Noch eine Alternative: 
Listenfeld, das alle (10) Zeilen mit den 50 Spaltenauf einmal anzeigt
oder
gleich ein Form, das an diese Tabelle gebunden ist und dessen DS mit einem Auswahlkombi bezgl.  Sp1 gefiltert wird..

Raffnix2013

Vielen Dank für Hilfestellung/Tipps besonders auf DONKARL´s Seite bisher.
Ich habe mich damit intensiv beschäftigt, aus Darstellungsgründen die Variablen anpassen müssen und komme aber mit den Beispielen nicht ganz zum Ziel:

Es sind nun 2 Tabellen:
Die erste Tab "SYSTEME" beinhaltet 1-n Einträge. Hier wird im ersten Kombifeld "ANLAGE"  eine Zeile gewählt und daraus ein Spalteninhalt "Syskurz" in das Formular "Verbrerf" eingetragen.Datenherkunft = SELECT SYSTEME.Syskurz, SYSTEME.SYSTEM, SYSTEME.BEZ FROM SYSTEME; Als Ereignis nach Aktualisierung habe ich diesen Code verwendet:
Private Sub ANLAGE_AfterUpdate()
On Error GoTo myError
Me!Komponente.RowSource = "SELECT Komp FROM Komponenten WHERE Syskurz = " & Forms![Verbrerf]![ANLAGE] 'Me!ANLAGE
    Me![Komponente].SetFocus
    Me![Komponente].Dropdown
myErrExit:
Exit Sub
myError:
MsgBox err.Number & " " & err.Description
Resume myErrExit
End Sub

Das zweite Kombifeld "Komponente" soll nun den Inhalt "Komp" der Tabelle "Komponenten" zeigen, deren Spalte ebenso die Information "Syskurz" enthält. Dazu habe ich bei Datenherkunft hiereingestellt.
SELECT Komponenten.Komp, SYSTEME.Syskurz FROM Komponenten INNER JOIN SYSTEME ON Komponenten.Syskurz = SYSTEME.Syskurz WHERE (((SYSTEME.Syskurz)=[Formulare]![VERBRERF]![ANLAGE]));

Nun wird aber nicht wie gewünscht der Inhalt von Kombifeld1 "ANLAGE" automatisch in Kombifeld2 "Komponente" gesetzt, sondern es öffnet sich ein Parametereingabe-Fenster - mit der Überschrift wie der Eintrag sein sollte :( .
Wenn ich dort die Info aus cbo1 von Hand eingebe sehe ich nur die korrekte Auswahl.
Warum gelingt mir der Automatismus nicht?

DF6GL

Hallo,

Zitatwird im ersten Kombifeld "ANLAGE"  eine Zeile gewählt und daraus ein Spalteninhalt "Syskurz" in das Formular "Verbrerf" eingetragen.

?? ??

Was wird da wo im Formular "Verbrerf" eingetragen?

Das Kombi "Anlage" erhält als Datensatzherkunft:

SELECT Syskurz, SYSTEM, BEZ FROM SYSTEME Order by Syskurz
Gebundene Spalte: 1
Spaltenanzahl: 3
Spaltenbreiten: 1;4;4    (wenn die erste Spalte (0) auch sichtbar sein soll)


und bei "Nach Aktualisierung"  wird das zweite Kombi eingestellt:

Private Sub ANLAGE_AfterUpdate()
On Error GoTo myError
Me!Komponente.RowSource = "SELECT Komp FROM Komponenten WHERE Syskurz = '" & Me!ANLAGE & "'"  'sofern "Syskurz" den Datentyp TEXT hat
    Me!Komponente.SetFocus
    Me!Komponente.Dropdown
myErrExit:
Exit Sub
myError:
MsgBox err.Number & " " & err.Description
Resume myErrExit
End Sub



Beide Kombis sind ungebunden. Was jetzt bei einer Auswahl im zweiten Kombi passieren soll, ist nicht bekannt.


Zitatder Inhalt von Kombifeld1 "ANLAGE" automatisch in Kombifeld2 "Komponente" gesetzt

Was meinst Du damit?


Zitatdie Info aus cbo1 von Hand eingebe

Was ist nun wieder "cbo1" ?

Raffnix2013

Hallo DF6GL,

Zitat von: undefined?? ??   Was wird da wo im Formular "Verbrerf" eingetragen?
Das Formular beinhaltet alle Kombifelder. Die Daten der Kombifelder füllen eine Tabelle zur weiteren Nutzung.
Das Kombi1 zeigt aus der Tabelle "SYSTEME" die Zeilen mit 3von5 Spalten. eine der spalten heißt "Syskurz" und nur diese spalte wird benutzt.  Dieser Inhalt soll als Auswahlkriterium für Kombifeld2 "Komponente" gelten. Im Grunde klappt das ja auch, nur das statt den Inhalt direkt auszuwerten, muss ich ihn sozusagen in der erscheinenden Parameterbox nochmals eingeben:
Sie dürfen in diesem Board keine Dateianhänge sehen.
Wenn ich das getan habe, (Pardon, cbo1 sollte Kombifeld1 lauten) wird die Auswahl in Kombifeld2 korrekt getroffen:
Sie dürfen in diesem Board keine Dateianhänge sehen.

ZitatBeide Kombis sind ungebunden. Was jetzt bei einer Auswahl im zweiten Kombi passieren soll, ist nicht bekannt.
- was meinst du damit?

Was muss ich noch tun, damit das Parameterfenster nicht mehr kommt - bzw. der Automatismus einsetzt?

DF6GL

Hallo,

ZitatWas muss ich noch tun, damit das Parameterfenster nicht mehr kommt

Alle Namen überprüfen.  Die Meldung kommt, wenn ein Feld, bzw. Feldname nicht existiert.


Lt. deinem Bild scheinen die Kombis gebunden zu sein. Damit funktionieren "abhängige Kombis" nicht.

Zudem sind vermutlich die Normalisierungsregeln nicht beachtet.


Lad die DB hier hoch, komprimiert/repariert und gezippt.