Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Witam,
W jaki sposób zrobić, aby przy wpisywaniu w Pole kombi rozwinęła się lista i ograniczała do wpisanych danych - powinno wykonać się poniższe zapytanie:

sSQL = "SELECT tblCZESCI.nazwa_czesci, tblCZESCI.id_czesci FROM tblCZESCI " & _
"WHERE nazwa_czesci Like ('*" & sFilterText & "*') ORDER BY tblCZESCI.nazwa_czesci"

gdzie sFilterText - nazwa Pola kombi.

np.

w polu wpisuję: drzwi
....
co powinno się zrobić :
1. lista powinna się rozwinąć z odpowiednimi pozycjami
2. wykonanie sSQL
3. widok listy:
drzwi prawe
prawe drzwi
coś tam drzwi i tak dalej
....

4. użytkownik strzałką mógłby wskazać odpowiednia pozycję (jasne że myszką także)

Czy jest to w ogóle możliwe ? Walczyłem i nie mogę otrzymać opisanego efektu.

Paweł
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

to jest istota działania tej kontrolki. W "źródło wierszy" wrzucasz dowolną kwerendę, i "ogranicz do listy" - tak - i już. Jak chcesz aby wyświetlała więcej pól to też we właściwościach ustawiasz, z szerokościami
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Podczepię się pod temat, gdyż u mnie też nie chce to działać. Mam tabelę, do pola kombi biorę tylko jedną kolumnę i wyświetlają mi się wszystkie rekordy. Też chciałabym, aby wpisywanie kolejnych znaków ograniczało mi listę, ale nie udaje mi się to. Próby wpisania w kryterium kwerendy odwołania do pola kombi powodują, że lista pola kombi jest pusta....

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Dariusz Kolasa:
to jest istota działania tej kontrolki. W "źródło wierszy" wrzucasz dowolną kwerendę, i "ogranicz do listy" - tak - i już.

No nie wiem czy tak już ....

Proszę spróbuj uzyskać efekt o który piszę w pierwszym poście.

Mam sobie pole kombi cbo1. Użytkownik wpisuje sobie jakiś tekst do tego pola. Co chcę uzyskać:
1. Po każdym wpisanym znaku lista w polu kombi powinna się zaktualizować wg poniższego SQL.
2. list kombi cały czas powinna być rozwinięta żeby użytkownik widział dostępne możliwości wyboru

Ważne ! dla uproszczenie - testuję jedno pole. Poniższe zapytanie jest prawidłowe. Działa afterupdate - czyli wpisuję tekst w kombi idę do drugiego pola, wracam do kombi rozwijam listę i jest to na co czeka, ale to nie spełnia moich założeń.

Me.cbo1.RowSource = "SELECT Pole1 " & _
"FROM tbl1 " & _
"WHERE tbl1.Pole1 LIKE ('*" & Me.cbo1 & "*')" & _
"ORDER BY tbl1.Pole1"

Dodatkowo! sprawdziłem

Private Sub cbo1_Change()
MsgBox Me.cbo1
End Sub

Co zwraca ? Po wpisaniu pierwszego znaku Null - błąd , jeżeli już coś jest w polu - to bazuje na pierwszym wpisie - koleje znaki wpisane w pole kombi przy tym zdarzeniu nie są uwzględniane - to zapewne jest problemem u Marzeny.
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

dobra, nie zrozumiałem pytania. Oczywiście jeżeli chcesz DYNAMICZNIE ograniczać liczbę wpisów w kombiaku w trakcie pisania to jest to trochę trudniejsze. Trzeba na zdarzeniu change robić requery kombiaka. Dodatkowa trudność to to, że kombiak nie ma wtedy .Value tylko .Text
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Zrobiłam u siebie takie coś:
Private Sub Wybierz_Change()
Dim Ogranicz As String
Dim KW
Ogranicz = Me!Wybierz.Text
KW = "SELECT KwerendaKontrahentow.Nazwa " & _
"FROM KwerendaKontrahentow " & _
"WHERE KwerendaKontrahentow.Nazwa LIKE '*" & Ogranicz & "*'" & _
"ORDER BY KwerendaKontrahentow.Nazwa;"
Me!Wybierz.RowSource = KW
Me!Wybierz.SetFocus

End Sub

Jak dodaję Requery - to wyskakuje mi błąd, że trzeba najpierw zapisać pole :(
Niby filtruje mi zgodnie z tym co wprowadzam, ale jakoś mało mi się podoba to rozwiązanie.

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Niby to samo. U Ciebie Marzena nie widzę Dropdown.

Pozostaje jeden drobiazg - po wpisaniu kliku znaków próbuję przejść strzałką DÓŁ GÓRA - nie działa tak jak trzeba - Wybiera pierwszą napotkaną pozycję .

Szukam warunku jak przy Change ignorować wykonanie SQL - to może pomoże ...?

Requery u mnie również zbędne .

Private Sub Kombi2_Change()
'MsgBox Me.Kombi2.Text


Me.Kombi2.RowSource = "SELECT Pole1 " & _
"FROM tbl1 " & _
"WHERE tbl1.Pole1 LIKE ('*" & Me.Kombi2.Text & "*')" & _
"ORDER BY tbl1.Pole1"
Me.Kombi2.Dropdown

End Sub
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

no ale postęp jest :)

Jak nie do końca pasuje to zawsze możesz zrobić pole txt i listę przeładowywaną na change txt i udawać, że to kombi :)Dariusz Kolasa edytował(a) ten post dnia 14.01.13 o godzinie 13:34
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Paweł, trochę przestawiłam u siebie:
Private Sub Wybierz_Change()
Dim Ogranicz As String
Dim KW
Me!Wybierz.SetFocus
Ogranicz = Me!Wybierz.Text
KW = "SELECT KwerendaKontrahentow.Nazwa " & _
"FROM KwerendaKontrahentow " & _
"WHERE KwerendaKontrahentow.Nazwa LIKE '*" & Ogranicz & "*'" & _
"ORDER BY KwerendaKontrahentow.Nazwa;"
Me!Wybierz.RowSource = KW
Me!Wybierz.Dropdown
End Sub


Działa, ale tylko na myszkę. Może trzeba się pobawić zdarzeniem KeyPressed?

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Dariusz Kolasa:
no ale postęp jest :)

Jak nie do końca pasuje to zawsze możesz zrobić pole txt i listę przeładowywaną na change txt i udawać, że to kombi :)

Prawda :) dzięki za info.

Wiesz może jak wychwycić wciśnięcie strzałki DÓŁ GÓRA na klawiaturze.

Sprawdzam :

vbKeyDown , numerycznie 40 - ale nie działa.

przy msgbox- wciśnięcie strzałki nie powoduje żadnej reakcji.

Private Sub Tekst6_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
If KeyAscii = 40 Then

MsgBox "Hello strzałka w dół"

End If
End Sub

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Marzanna Szulta:
Paweł, trochę przestawiłam u siebie:
Private Sub Wybierz_Change()
Dim Ogranicz As String
Dim KW
Me!Wybierz.SetFocus
Ogranicz = Me!Wybierz.Text
KW = "SELECT KwerendaKontrahentow.Nazwa " & _
"FROM KwerendaKontrahentow " & _
"WHERE KwerendaKontrahentow.Nazwa LIKE '*" & Ogranicz & "*'" & _
"ORDER BY KwerendaKontrahentow.Nazwa;"
Me!Wybierz.RowSource = KW
Me!Wybierz.Dropdown
End Sub


Działa, ale tylko na myszkę. Może trzeba się pobawić zdarzeniem KeyPressed?

Prawda mu mnie też działa mysz, ale szukam jak opisałem w poście do Darka.

Nie wiele brakuje do celu :) - nie testowałem na RT, ale mam nadzieję że będzie ok.
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

KeyPress nie, ale zdarzenie KeyDown wychwytuje strzałkę.

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Właśnie znalazłem to KeyDown i poniżej rozwiązanie, może komuś się przyda - warto :)

Dzięki za wsparcie.

Dim l40 As Integer
Dim l38 As Integer

Private Sub Kombi2_Change()

If l40 = 40 Or l38 = 38 Then
Me.Kombi2.Dropdown
Else
Me.Kombi2.RowSource = "SELECT Pole1 " & _
"FROM tbl1 " & _
"WHERE tbl1.Pole1 LIKE ('*" & Me.Kombi2.Text & "*')" & _
"ORDER BY tbl1.Pole1"
Me.Kombi2.Dropdown
End If

End Sub

Private Sub Kombi2_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode
Case vbKeyDown
l40 = 40
Case vbKeyUp
l38 = 38
Case Else
l38 = 0
l40 = 0
End Select

End Sub
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

Paweł, wyszła nam prawie burza mózgów :)

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

:)
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Pole kombi - ograniczenie listy przy wpisywaniu danych

gratulacje :)

Następna dyskusja:

[Poczatkujacy] Pole Kombi j...




Wyślij zaproszenie do