2012-04-13 11 views
0

Ich programmiere ein einfaches Kontrollkästchen in MS Access. Dies ist, wie es geht:Programmierung Kontrollkästchen in MS Access

  1. Ich habe eine Combobox mit einem Drop-Down-Werten der Benutzer einrichten können wählen aus (zB b1, b2, c1, d1, d2, d3, e0, e2, etc). Sie sind nur 2 Zeichen Textzeichenfolge.
  2. Ich habe ein Kontrollkästchen, das verwendet werden soll, wenn der Benutzer den Wert in der Dropdownliste ändern möchte. Wenn das Kontrollkästchen aktiviert ist, werden alle Werte in "ds (drop down value)" geändert, sodass nur "ds()" hinzugefügt wird (zB ds (b1), ds (b2)). , ds (c1), usw.)
  3. Wenn der Benutzer das Kontrollkästchen unchecks, dann bleibt der Wert als 2-Zeichen-Textzeichenfolge.

das ist mein erster Ausflug in Access-Programmierung ist. Mein Pseudo-Code ist wie folgt :

Private Sub distchk_Click() 
if distchk is checked then 
    Me.ECOSITE = "ds(" & Me.ECOSITE & ")" 
else: 
    Me.Ecosite 
End Sub 

I getestet:

Private Sub distchk_Click() 
Me.ECOSITE = "ds(" & Me.ECOSITE & ")" 
End Sub 

aber es fügt immer ds() hinzu, wenn ich es überprüfe, und es wird es nicht entfernen, wenn ich es abnehme.

Alle Vorschläge wären großartig!

Mike

+0

Was ist Ihre Absicht hier? Was Sie vorschlagen, ist sicherlich in Access möglich, aber es klingt ein bisschen ... unorthodox ... um es gelinde auszudrücken. Wenn Sie uns Ihr Endziel nennen, können wir Ihnen vielleicht einen besseren Weg vorschlagen. – mwolfe02

+0

das ist mein Endergebnis.Der Benutzer wählt etwas aus dem Kombinationsfeld, das nur eine Klassifizierung eines Vegetationslandabdeckungstyps ist. Wenn der Bereich gestört wurde, erhält die Klassifikation einen Modifikator (d. H. Wenn die Einheit b1 gestört ist, erhält sie den Modifikator ds(), also ds (b1)). Ich möchte einfach, dass der Benutzer das Kontrollkästchen aktiviert und den Modifikator hinzufügt. Wenn sie es deaktivieren, möchte ich, dass der Modifikator entfernt wird. – Mike

+0

Es scheint mir, als würden Sie Ihre Daten zu früh formatieren. Getrennte Daten sollten in der Eingangsphase (Dateneingabeformular) getrennt aufbewahrt werden. Dies wird Ihre Benutzeroberfläche sauberer halten und Ihnen mehr Flexibilität bei der Ausgabe Ihrer Daten geben (in Berichten, Exporten usw.). Siehe meine Antwort unten für zwei alternative Ansätze. – mwolfe02

Antwort

3

Sie machen unnötige Arbeit für sich selbst und eine verwirrende Schnittstelle für die Benutzer. Sie sammeln zwei diskrete Daten: LandCoverType (ein Textfeld) und IsDisturbed (ein Ja/Nein-Feld, aka boolean oder Bit-Feld), so sehe ich keinen Grund, sie in einem Eingabeformular zu kombinieren. Sie stellen dem Benutzer keine zusätzlichen Informationen zur Verfügung, indem Sie die Landbedeckungsarten in "ds()" einschließen. Ich würde zwei alternative Ansätze vorschlagen:

Zwei getrennte Felder(bevorzugte Methode)

  • ein LandCoverType Feld erstellen (Text); binden Sie Ihre Combobox an dieses Feld (in der ComboBox ControlSource geben Sie LandCoverType ein)
  • erstellen Sie ein IsDisturbed-Feld (Ja/Nein); binden Ihre Checkbox auf dieses Feld (gleiche Art und Weise wie oben)
  • , wenn Sie die „ds()“ in einem Bericht angezeigt werden sollen, dann tun, dass als Teil der Formatierung des Berichts Feld (zB =IIf([IsDisturbed], "ds(" & [LandCoverType] & ")", [LandCoverType]))

ein kombiniertes Feld

  • ein einzelnes LandCoverType Feld (Text)
  • ändern alle Ihre LandCoverType die mit und ohne die ds() (zB die RowSource Ihrer Combobox erstellen zu schließen, wenn Ihr RowSource ein va lue list: b1, b2, c1, ds(b1), ds(b2), ds(c1))
+0

Danke mwolfe02. Ich bin beschränkt auf eine pro entworfene Datenbank für einen Kunden zu verklagen. Ich habe keine Flexibilität, es so zu modifizieren, dass es etwas Erwünschteres und etwas Sinnvollem passt. :(Ich habe es geschafft, das Skript zu setzen, um dies mit meinem Kontrollkästchen zu tun. Danke für die Vorschläge. Ich mag den Ansatz und es kann mit anderen Projekten arbeiten. – Mike