WinFuture-Forum.de: [Access] Kombinatiosnfeld/DropDown per VBA überprüfen ob es ausgefüllt - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[Access] Kombinatiosnfeld/DropDown per VBA überprüfen ob es ausgefüllt


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. November 2010 - 17:47

Hallo jungs,

ich habe Frage zu Kombinatinsfeldern/DropDowns.

Wie kann ich per VBA überprüfen ob ein Wert ausgewählt ist?

Ich habe schon alle möglichkeiten durchgespielt..

.. is Nothing, IsEmpty, IsNull, einfach alles. Doch es wird einfach nichts..

 If IsNull(Me!kombi_bauteil) = True Then ...


Ich habs auch mit "." und "!" hinter der "Me" versucht.
Im Internet kann ich auch nichts finden was irgendwie funktioniert hat.

Ich hofe ihr könnt mir helfen.
0

Anzeige



#2 Mitglied ist offline   species 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.341
  • Beigetreten: 12. März 05
  • Reputation: 50
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Computer ; Formel 1

geschrieben 11. November 2010 - 18:26

Eckige Klammern schon probiert?

Edit:

Eckige Klammern ist natürlich Blödsinn, sry :lol:

Ich habe aber mal selbst probiert, und bei mir funktioniert es z.B. so.


Kombifeld Ereignis beim verlassen:
If IsNull(Kombinationsfeld0) = True Then Kombinationsfeld0.Value = "hallo"


und auch so.

If IsNull(Me!Kombinationsfeld0) = True Then Me!Kombinationsfeld0.Value = "hallo"


Warum das bei dir nicht geht, KA :lol:

Bist du sicher, dass das Feld wirklich leer ist, denn ein Leerzeichen ist z.B. auch ein Zeichen und somit nicht mehr leer.

Species!

Dieser Beitrag wurde von species bearbeitet: 11. November 2010 - 19:11

Eingefügtes Bild

Eingefügtes Bild
0

#3 Mitglied ist offline   sn00b 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.242
  • Beigetreten: 07. November 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. November 2010 - 19:16

Bekommst du denn eine Fehlermeldung oder erreichst du nur nicht dein gewünschtes Ergebnis?

Das 'Me' bezieht sich auf das aktuelle Formular, wenn du nur ein Formular benutzt kannst du dieses getrost weglassen. Generell ist es auch schlauer die Formulare mit ihrem Namen anzusprechen. Also anstelle von 'Me' den jeweiligen Formularnamen einsetzen.
0

#4 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. November 2010 - 20:20

Habe es nochmal vrsuch, es klappt so eindeutig nicht.

	Dim Red As Long
	Dim Save As Boolean
	Red = RGB(255, 0, 0)
	Save = True
	
	If IsNull(Me.ersteller.Value) = True Then
		Me.ersteller.BackColor = Red
		Save = False
	End If
	
	'MsgBox IsEmpty(Me!kombi_bauteil)
	'MsgBox IsNull(Me!kombi_bauteil)
	'MsgBox IsObject(Me!kombi_bauteil)
	
	
	If IsNull(Me!kombi_bauteil) = True Then
		Me.kombi_bauteil.BackColor = Red
		MsgBox "test"
		Save = False
	End If
	If IsNull(Me!femi_1) = True Then
		Me.femi_1.BackColor = Red
		Save = False
	End If
	If IsNull(Me!zeit_erstell.Value) = True Then
		Me.zeit_erstell.BackColor = Red
		Save = False
	End If
	If IsNull(Me!ausbilder) = True Then
		Me.ausbilder.BackColor = Red
		Save = False
	End If
	If IsNull(Me!werkstoff_1) = True Then
		Me.werkstoff_1.BackColor = Red
		Save = False
	End If
	
	If Save = True Then
		'Auftrag speichern
		DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
		'Meldung ausgeben
		MsgBox "Der Auftrag wurde erfolgreich gespeichert!"
	Else
		'Meldung ausgeben
		MsgBox "Bitte ALLE ROT markierten Felder ausfüllen. Ansonsten gehen ALLE Daten verloren."
	End If


Diese Felder hier möchte ich überprüfen. Habe ab und zu mir ein paar MessageBoxes ausgeben lassen, um es zu prüfen. Doch so geht es echt nicht.

Falls es euch hilft, die Datenherkunft der Kombinationsfelder ist eine SQL Abfrage.
0

#5 Mitglied ist offline   species 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.341
  • Beigetreten: 12. März 05
  • Reputation: 50
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Computer ; Formel 1

geschrieben 11. November 2010 - 21:34

Was genau geht denn nicht? Kommt ein Fehler?
Wie löst du das Ereignis eigentlich aus?

Also bei mir geht das genau so, außer das die roten Felder nicht mehr weiß werden, wenn man die Daten nachgetragen hat, das fehlt nämlich auch noch.

Species!
Eingefügtes Bild

Eingefügtes Bild
0

#6 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. November 2010 - 21:48

Es kommt kein Fehler. ich habe mir mal den Wert der Prüfung ausgeben lassen, es kommt immer nur false. Niemals True! Ich löse das Ereignis aus, wenn ich auf den Speichern Butten Klicke -> "Beim Klicken"

Die Felder setzte ich bei dem Formularereignis "Beim Anzeigen" oderso zurück!

Habt ihr denn das Kombinationsfeld mit Daten aus einer Tabelle gefüttert?

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 11. November 2010 - 21:48

0

#7 Mitglied ist offline   species 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.341
  • Beigetreten: 12. März 05
  • Reputation: 50
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Computer ; Formel 1

geschrieben 11. November 2010 - 22:13

Also ich hab das mit 2 Feldern probiert, beide bekommen ihre Daten aus einer Tabelle.

Bei mir funktioniert das wie gesagt, jedenfalls stimmen die Message Boxen und Farbe rot bei leeren Feldern.
wenn ich einen wert auswähle kommt auch die Meldung das gespeichert wurde.

Ich schau mir das Morgen noch mal in Ruhe an, ich muss jetzt Schluss machen, um 6:00 ist die Nacht rum.

Hast du denn die Möglichkeit deine DB hier hochzuladen, oder ist das vertraulich?

N8

Species!

Dieser Beitrag wurde von species bearbeitet: 11. November 2010 - 22:15

Eingefügtes Bild

Eingefügtes Bild
0

#8 Mitglied ist offline   sn00b 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.242
  • Beigetreten: 07. November 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. November 2010 - 08:54

Ohne den ganzen Aufbau des Formulars wird es schwer eine Lösung zu finden.

Generell würde ich in deinem Fall beim laden des Formulars 'Save' auf False setzen und alle Kombinationsfelder (sollten ja leer sein) mit der entsprechenden Hintergrundfarbe befüllen.

Dann startest du nach jeder Änderung eines Kombinationsfeldes eine Funktion die überprüft ob etwas in den Feldern steht und entsprechend die Hintergrundfarbe ändert und wenn alle gefüllt sind 'Save' auf True setzt.

Mit etwas Bastelei kann man es auch so gestallten das erst dann der 'Save-Button' angezeigt wird wenn alle Voraussetzungen gegeben sind.

Hast du beim Versuch mit den Messegboxen diese angezeigt bekommen oder wurden keine Angezeigt?
0

#9 Mitglied ist offline   species 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.341
  • Beigetreten: 12. März 05
  • Reputation: 50
  • Geschlecht:Männlich
  • Wohnort:Hessen
  • Interessen:Computer ; Formel 1

geschrieben 12. November 2010 - 12:22

Also ich hab jetzt mal eine Lösung erstellt, so wie ich es gemacht hätte.

Bei mir funktioniert das so:

In den Eigenschaften deiner Steuerelemente, die du prüfen willst, schreibst du beim Reiter "Andere" in das Feld "Marke" ein x

Im VBA Code werden alle Felder mit dieser Marke x geprüft, das hat den Vorteil, dass du neue Felder schnell hinzufügen kannst, bzw. auch welche von der Prüfung ausschließen kannst.

Ich habe auch eingebaut, das Felder wieder weiß werden, wenn man den Wert nachträgt.
Du solltest dies also dort wo du das gemacht hast abschalten.

Ich denke dein Fehler liegt in irgendeiner anderen Prozedur, z.B. beim anzeigen, aktualisieren, hingehen, etc.

Private Sub BTN_Speichern_Click()
On Error GoTo Err_BTN_Speichern_Click

Dim Red As Long
Dim Save As Boolean
Red = RGB(255, 0, 0)

For Each ctl In Me
  If ctl.Tag = "x" Then ' alle controls mit marke x auf Nullwert prüfen und entsprechend einfärben.
	If IsNull(ctl.Value) = False Then ctl.BackColor = 16777215 Else ctl.BackColor = Red
  End If
Next ctl
 
For Each ctl In Me
  If ctl.Tag = "x" Then ' alle controls mit marke x auf Nullwert prüfen und save auf wahr oder falsch setzen.
	If IsNull(ctl.Value) = False Then Save = True Else Save = False
  End If
Next ctl

If Save = True Then
		'Auftrag speichern
		DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
		'Meldung ausgeben
		MsgBox "Der Auftrag wurde erfolgreich gespeichert!"
	Else
		'Meldung ausgeben
		MsgBox "Bitte ALLE ROT markierten Felder ausfüllen. Ansonsten gehen ALLE Daten verloren."
	End If
	
Exit_BTN_Speichern_Click:
	Exit Sub

Err_BTN_Speichern_Click:
	MsgBox Err.Description
	Resume Exit_BTN_Speichern_Click
	
End Sub


Species!

Dieser Beitrag wurde von species bearbeitet: 12. November 2010 - 12:24

Eingefügtes Bild

Eingefügtes Bild
0

#10 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. November 2010 - 15:19

Beitrag anzeigenZitat (species: 11.11.2010, 22:13)

Hast du denn die Möglichkeit deine DB hier hochzuladen, oder ist das vertraulich?

Die Datenbank ist für eine große Firma, also vertraulich! :heiligenschein: Teile kann ich allerdings hochladen.

Ich werde es mal nach deinem Beispiel probieren. die Funktion IsNull funktioniert bei normalen Textfeldern super, aber ich denke das ist nur ein Frage der Zeit wann ich es für die Kombinationsfelder einrichten kann.

Danke und Beste Grüße,
Toaster
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0