MS ACCESS - konstrukcja IF nie działa.

0

Okej, sytuacja prezentuje się następująco. Na pierwszym moim screenshocie jest wycinek formularza, który posiadam. Z opcji "Portfel SAB" można wybrać 4 opcje, jedną z nich jest ta widoczna na screenie. Z pola "Cel rozwojowy SAB" również można wybrać jakieś opcje, ale (!) są one zależne od tego, co się wybrało w opcji "Portfel SAB". Przykładowo: jeżeli w "Portfel SAB" wybiorę opcję widoczną na screenie 1, to w oknie "Cel rozwojowy SAB" powinny wyświetlić się wartości "1" oraz "2" do wyboru. Jednak to nie działa. Zastosowałem kod VBA, który widoczny jest poniżej. Wykonuje to po aktualizacji pola "Portfel SAB". Próbowałem robić to po odpowiednich zdarzeniach, jednak bez zmian. Nazwy mi się na bank zgadzają, bo kopiowałem z listy rozwijanej. Nie wiem czy ważną informacją jest to, że lista "Cel rozwojowy SAB" nie ma wcześniej zdefiniowanej listy, definiuje ją dopiero w kodzie VBA (jednak próbowałem też z wcześniej przygotowaną listą). Nie mam pomysłu co nie działa.

Private Sub Portfel_AfterUpdate()
If Portfel.Value = "P1 - Klient i jego potrzeby" Then
    SAB.RowSource = "1" & ";" & "2"
ElseIf Portfel.Value = "Wartość2" Then
    SAB.RowSource = "3" & ";" & "4"
ElseIf Portfel.Value = "Wartość3" Then
    SAB.RowSource = "5" & ";" & "6"
ElseIf Portfel.Value = "Wartość4" Then
    SAB.RowSource = "7" & ";" & "8"
End If
End Sub
1

Kod powyżej jest OK ;) Tak jak pisałem na priv. Skopiowałem do siebie do testowej bazy i wszystko śmiga.
Nie wiem ... może załącz tą swoją bazę ... tutaj (a jeśli masz tam już jakieś dane krytyczne to przekopiuj interesujący formularz do nowej) bo ja nie wiem jak jeszcze można to sprawdzić :|

Ps. Ja używma innych systemów językowych więc ja mam problemy z polskimi znakami "ść" ale rozumiem, że u Ciebie to nie problem.

0

@BlackBad: Jest to żywcem wzięte ode mnie, po skasowaniu danych. Jeśli testowo chciałbyś wprowadzić jakiś rekord to klawisz do wprowadzania jest na stronie "Budżet".
Pola, które muszą być wypełnione to te z pierwszej strony, pozostałe mają wartość ustawioną, że mogą być niewypełnione.

1

No dobra mamy to. To 2 pole combi masz podłączone jako "Control source" do pola w swojej tabeli. Czyli z jednej strony mówisz formularzowi, że ma brać wartości do tego pola combi z kolumny "Cel rozwojowy SAB" w tabeli "Karta projektu - przykładowa", a z drugiej strony w VBA chcesz żeby to pole brało dane z "row source" i podajesz możliwe "wartości". W tym tkwi problem.

Musze teraz lecieć ... ale sprawdzę później (o ile nikt inny wcześniej nie poda Ci odpowiedzi) jak najlepiej to u Ciebie rozwiązać.

0

Dobra, rozumiem w czym jest rzecz.Dobra, rozumiem w czym jest rzecz. W takim razie pojawia się moje pytanie.
Czy jest możliwość, aby zrobić pole kombi, którego wartość będzie ustalana na podstawie kodu VBA, a dane wyklikane przez użytkownika będą trafiały do rekordu w bazie danych?

To samo o ile pamiętasz chciałem zrobić z pieniędzmi - jednak znalazłem odpowiednie pole i nie musiałem się trudzić.

@BlackBad czekam z niecierpliwością na powrót :D

2

W kombo SAB zmień właściwość Dziedzicz listę wartości na NIE i zadziała

Czyli z jednej strony mówisz formularzowi, że ma brać wartości do tego pola combi z kolumny "Cel rozwojowy SAB" w tabeli "Karta projektu - przykładowa", a z drugiej strony w VBA chcesz żeby to pole brało dane z "row source" i podajesz możliwe "wartości". W tym tkwi problem.

@BlackBad pomieszałeś, dla uporządkowania
ControlSource/Źródło formantu - to wskazanie w którym polu zapisywana jest wartość przechowywana przez kontrolkę
RowSource/Lista Wartości to jest informacja co kontrolka ma wyświetlać w liście rozwijanej i zależy od właściwości RowSourceType/Typ Źródła Wierszy, jeżeli to jest lista wartości to wstawiamy tam listę rozdzieloną ; (zależy od ustawień regionalnych)

UPDATE:

nie potrzebnie "kleisz" tego stringa w kodzie, prościej tak:

SAB.RowSource = "1;2"
1

Taaa masz rację .. śpieszyłem się i na szybko wyklikałem i pisałem posta ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1