Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Access 2007 - wybór rekordów z tabeli wg id z formularza

ipawka 08 Sty 2012 00:09 2814 2
  • #1 08 Sty 2012 00:09
    ipawka
    Poziom 7  

    Witam,
    mam taki problem.
    W podformularzu mam pole kombi na podstawie którego wybieram klienta. W tym samym podformularzu umieściłem przycisk który ma otwierać formularz w którym będą widoczne zamówienia wybranego wcześniej klienta.
    Przez konstruktor kodu zrobilem makro z akcją otwórz formularz gdzie starałem się wpisać kryterium wyboru w polu WHERE.
    niestety nie chce zadziałać to pole i albo pokazuje mi wszystkie zamówienia albo nic :(
    Help !

    Dodano po 1 [godziny] 19 [minuty]:

    Wymyśiłem coś poniższego ale nie chce zadzialać

    Private Sub Polecenie33_Click()
    cmdOpen = "SELECT * " & "FROM Zamowienia_klienta" & "WHERE Zamowienia_klienta.IdKlienta_PI_IZ03P03 = Szykaj_klienta.IdKlienta"
    DoCmd.RunSQL (cmdOpen)
    DoCmd.OpenForm Zamowienia_klienta
    End Sub

    0 2
  • #2 08 Sty 2012 02:04
    mickpr
    Poziom 39  

    Witam.
    Zacznę... od końca
    Przede wszystkim musisz zrozumieć, że ciąg SQL (cmdOpen) nie jest "parsowany". Oznacza to, że jeśli wstawiłeś tam "Szykaj_klienta.IdKlienta"
    w nawiasach. to takie coś trafia bezpośrednio do silnika SQL.
    Powinieneś zrobić tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    (oczywiście jeśli właściwość kontrolki "Szykaj_klienta.IdKlienta" zwraca ci liczbę typu integer/long)

    Teraz druga sprawa, Nazewnictwo
    Zauważyłem, że masz "Zamowienia_klienta" zarówno w nazwie tabeli/kwerendy, jak i formularza. To moim zdaniem duży błąd.
    Ja sam stosuję przedrostki, które potem mi ułatwiają czytanie kodu. Przykładowo przyciski nazywam btnPrzycisk1, btnPrzycisk2
    formularze frmMain, frmPracownicy, ... kwerendy qryPracownicy, qryZapytanie, pola ComboBox - cmbPracownicy, cmbListy... Raporty - rptLista,.... itd...
    Jedynie nazwy tabel zostawiam bez prefiksów.
    Proponuję Tobie również ten sposób, inaczej przy większych projektach będzie Ci trudno zapanować nad wszystkim.

    A teraz trzecia sprawa - uwaga na przyszłość.
    Otóż komenda RunSQL wykonuje ci jedynie instrukcję SQL. Jako sama nie zwraca żadnej wartości.

    0
  • #3 08 Sty 2012 02:23
    ipawka
    Poziom 7  

    Dzięki serdeczne za pomoc i uwagi.
    To w sumie pierwszy taki w miarę rozbudowany projekt który robię i próbuję go poskładać a to trochę Accessem trochę VBA i SQL
    Ta niekonsekwencja w nazewnictwie wynika głownie z pośpiechu i pewnych rozpaczliwych prób szukania jakiegoś rozwiązania - żeby w końcu zadziałało.

    A wracając do tematu to darowałem sobie tą instrukcję i wróciłem do pierwszego pomysłu z makrem i akcją Otwórz Formularz.
    Znalazłem opis jak powinna wyglądać składnia warunku WHERE tej akcji (w pomocy Accessa) i niestety działa ale nie tak jak chciałbym.

    to jest wpisane w warunek WHERE [IdKlienta]=[Formularze]![Szukaj_klienta].[IdKlienta]
    jak wciskam przycisk to pokazuje sie okno z prośbą o podanie parametru
    a przecież miał sobie sam zaczytać z pola w formularzu
    jak mu podam właściwą wartość to odnajdzie zamówienia no ale to nie o to chodziło

    Raz jeszcze dziękuję za pomoc.

    0