2016-12-22 3 views
1

Ich benutze Access 2007-2010 und ich habe 2 Textfelder in einem Formular. Was ich machen möchte ist, wenn ein Benutzer einen Namen in textbox1 (unter Verwendung afterupdate), wie "bob" eingibt, möchte ich in der Lage sein, nur die einzigartigen Alter (keine Doppelalter) in textbox2 anzuzeigen. Die Namen und Alter sind in einer Tabelle mit der Bezeichnung data als so angelegt.Zugriff auf VBA Anzeigen von eindeutigen Daten in Textfeld

[Layout]

enter image description here

Die textbox2 würde 12, 64 oder untereinander angezeigt werden.

leider im Voraus, wenn diese sehr einfach zu tun, bin ich in dem Prozess Zugriff zusammen mit VBA lernen

Antwort

1

vielleicht ein bisschen mehr als das, was youre suche sie aber versuchen:

Dim ages(), name As String 
Dim y, x, i As Integer 

Dim rs As Recordset 

name = Me.textbox1.Value 

Set rs = CurrentDb.OpenRecordset("Select * from data Where name = '" & name & "'") 



With rs 

.MoveLast 
x = .RecordCount 
.MoveFirst 

ReDim ages(1 To (x + 1)) 

Do Until rs.EOF 
y = y + 1 
If y = 1 Then 

ages(y) = ![age] 

Else 

For i = 1 To y 

If ages(y) = ages(i) And y <> i Then 

ages(y) = "skip" 
GoTo exiter 

Else 

'fine 
ages(y) = ![age] 
End If 

Next i 
End If 
exiter: 
.MoveNext 

Loop 

.Close 
End With 

y = 0 

For y = 1 To x 


If ages(y) <> "skip" Then 

ages(x + 1) = ages(x + 1) & ages(y) & "," 
End If 

Next y 


'feel free to change form msgbox to whatever form object you want 

MsgBox " Entries in this List with the name " & name _ 
      & vbNewLine & ages(x + 1) 

entferne die vb neue Zeile und ersetze sie mit "," und die msgbox mit dem Textfeld, wenn du willst

+0

Also ich versuche, deinen Code zum arbeiten zu bekommen, da ich all diese Sachen aufschlage und es ist, dass du möglicherweise ein '' ausgelassen hast End If' für eine der if-Anweisungen in der Do-Schleife? Ich glaube, es geht nach dem 'Next i', also habe ich das getan, aber es scheint, wenn ich einen Namen in das andere Alter gesetzt habe, wird die msgbox am Ende angezeigt, aber wenn ich einen Namen gebe, der kein Alter hat oder nicht existiert In der Tabelle erscheint diese msgbox natürlich leer. – Kayracer

+0

Hoppla, guter Fang. Sollte ein Ende sein, wenn zwischen 'nächsten I' und' exiter' – scott

+0

@RayceNeal folgende Änderungen sollten Sie geben, was Sie brauchen: '.MoveLast x = .RecordCount .MoveFirst' und auch 'Wenn Alter (y) = Alter (i) Und y <> i Dann ' – scott