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] wartości z kilku kwerend w jednym polu kombi

ojcio 08 Lip 2010 21:58 2287 3
  • #1 08 Lip 2010 21:58
    ojcio
    Poziom 17  

    Witam
    Pytanie raz już zadałem ale Admin je ześmiecił...
    Mam formularz do wprowadzania danych, a w nim pola kombi: maszyna,czynność,element
    Problem polega na tym że jeśli jako maszynę wybiorę PIŁĘ muszę w polu element wyświetlić wyniki z tabeli rozkroje
    jeśli wybiorę WIERTARKĘ muszę wyświetlić dane z tabeli formatki
    jeśli PAKOWANIE dane z tabeli palety
    i najtrudniejsze bo jeśli wybiorę OPERACJE_DODATKOWE to potrzebuję wszystkie wyniki. (to ostatnie da się rozłożyć na kilka mniejszych przez wybranie czynności)
    Myślałem żeby to zrobić na warunkowych formularzach - znaczy zależnie od wartości pola otwiera mi się formularz do wprowadzania danych, ale doliczyłem się takich 15 a na dodatek jeszcze ze 3 zagnieżdżone by doszły...
    Bardzo bym prosił porady (kiepsko stoję z VBA ale się staram) bo siedzę nad tym już prawie dwa tyg. do końca miesiąca baza ma działać i musi być przetestowana a ja nawet nie zabrałem się za kwerendy wyciągające dane z bazy- mówiąc krótko jestem głęboko w ...

    0 3
  • #2 09 Lip 2010 10:48
    arnoldziq
    Moderator Programowanie

    ojcio napisał:
    Witam
    Pytanie raz już zadałem ale Admin je ześmiecił...
    Nie admin tylko mod. Ale dziękuję za "dobre" słowo i potraktuję to jako komplement.
    ojcio napisał:
    Problem polega na tym że jeśli jako maszynę wybiorę PIŁĘ muszę w polu element wyświetlić wyniki z tabeli rozkroje
    jeśli wybiorę WIERTARKĘ muszę wyświetlić dane z tabeli formatki
    jeśli PAKOWANIE dane z tabeli palety
    No to nie powinno nastręczać problemów, prawda ?
    Sprawdzasz zmiany dokonane w pierwszym polu i odpowiednio aktualizujesz zawartość drugiego pola.
    ojcio napisał:
    i najtrudniejsze bo jeśli wybiorę OPERACJE_DODATKOWE to potrzebuję wszystkie wyniki. (to ostatnie da się rozłożyć na kilka mniejszych przez wybranie czynności)
    No, to jest bardzo ambitne przedsięwzięcie. Powiem tylko, że nie uda się połączyć w ten sposób kilku osobnych tabeli, aby "automatycznie" przenosiły część danych do jakiegoś komponentu. Jeżeli masz te dane w kilku tabelach, to jest to po prostu podstawowy błąd w procesie projektowania bazy danych.
    W tym przypadku, jedyna możliwość "wybrnięcia" z tej sytuacji, to "ręczne" przeglądanie rekordów z kilku tabel i utworzenie z nich jednej, tymczasowej tabeli. Na koniec wyświetlasz zawartość tej "zbiorczej" tabeli.
    ojcio napisał:
    Bardzo bym prosił porady (kiepsko stoję z VBA ale się staram) bo siedzę nad tym już prawie dwa tyg. do końca miesiąca baza ma działać i musi być przetestowana a ja nawet nie zabrałem się za kwerendy wyciągające dane z bazy- mówiąc krótko jestem głęboko w ...
    No comments.

    -1
  • #3 09 Lip 2010 15:05
    marcinj12
    Poziom 40  

    Pokażę Ci na przykładzie, ale do swojego programu musisz sobie sam dopasować.
    W ogóle to najlepiej by było wstawić te dane do jednej tabeli, z pierwszą kolumną po której filtrujesz. Wówczas pole drugie jest zasialane zapytaniem SQL z warunkiem WHERE xxx = Kombi1
    Jak masz je w kilku tabelach to więcej roboty dla Ciebie.

    Na formularzu są dwa niezwiązane pola Kombi: Kombi1 i Kombi4.
    Kombi1 jest przypisaną na sztywno listą wartości: "Model"; "Nazwa modelu"; "Nazwa karty"; "Wszystkie"

    Kombi1 jest główne, wartości w polu Kombi4 (a konkretnie źródło danych = RowSource) zależą od tego co wybrano w Kombi1.

    We właściwościach Kombi1 tego pola wybierasz zdarzenie "Po aktualizacji" / konstruktor kodu.

    W kodzie wpisujesz coś w stylu:

    Code:

    Private Sub Kombi1_AfterUpdate()
    Select Case Kombi1
        Case "Model":
            Kombi4.RowSource = "SELECT DISTINCT [Model] FROM [Model-referencja] ORDER BY [Model]"
           
        Case "Nazwa modelu":
            Kombi4.RowSource = "SELECT DISTINCT [Nazwa modelu] FROM [Model-referencja] ORDER BY [Nazwa modelu]"
         
        Case "Nazwa karty":
            Kombi4.RowSource = "SELECT DISTINCT [Nazwa panelu] FROM [Panele] ORDER BY [Nazwa panelu]"
       
        Case "Wszystkie":
            Kombi4.RowSource = "SELECT DISTINCT [Model] FROM [Model-referencja] " & _
                                "UNION SELECT DISTINCT [Nazwa modelu] FROM [Model-referencja] " & _
                                "UNION SELECT DISTINCT [Nazwa panelu] FROM [Panele] " & _
                                "ORDER BY 1 "
        Case Else:
            MsgBox "Nieznane pole"
    End Select
    End Sub

    1
  • #4 09 Lip 2010 18:16
    ojcio
    Poziom 17  

    arnoldziq napisał:
    No to nie powinno nastręczać problemów, prawda ?
    Sprawdzasz zmiany dokonane w pierwszym polu i odpowiednio aktualizujesz zawartość drugiego pola.

    gdyby nie nastręczało mi to trudności to bym się głupio nie pytał... Pamiętaj że nie wszystko co jest proste dla Ciebie jest proste zrozumiałe i oczywiste dla pozostałych - szczególnie początkujących...

    0