MS ACCESS - globalna zmienna.

MS ACCESS - globalna zmienna.
Tomasz Papryka
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Medelin
  • Postów: 100
0

Mam dwa formularze: "Formularz1" oraz "Formularz2". Na "formularzu2" wyciągana jest pewna wartość (kontoGlobalne), która przechowuje intigera, którego chciałbym wykorzystać na "formularzu1". Kod wyciągający moje 'kontoGlobalne' to:

Kopiuj
Public Sub Polecenie18_Click()

Dim rst3 As Dao.Recordset
Dim strSQL3 As String

If IsNull(Me.login) Then
    MsgBox "Pusty login", vbInformation, "Keczup"
    Me.login.SetFocus
ElseIf IsNull(Me.haslo) Then
    MsgBox "puste haslo", vbInformation, "majonez"
    Me.haslo.SetFocus
Else
    If (IsNull(DLookup("[login]", "Uzyszkodnicy", "[login]='" & Me.login.Value & "'"))) Or _
    (IsNull(DLookup("[haslo]", "Uzyszkodnicy", "[haslo]='" & Me.haslo.Value & "'"))) Then
        MsgBox "Nieprawidlowe cos"
    Else
        strSQL3 = "SELECT ID_uzytkownika FROM Uzyszkodnicy WHERE Uzyszkodnicy.login = '" & login & "' "
        Set rst3 = CurrentDb.OpenRecordset(strSQL3)
        
        kontoGlobalne = rst3!ID_uzytkownika
        
        rst3.Close
        Set rst3 = Nothing
    DoCmd.OpenForm "Formularz1"
    MsgBox kontoGlobalne
    End If
End If
End Sub

Chciałbym użyć tej zmiennej w "Formularzu1" przy takim zapytaniu:

Kopiuj
strSql = "SELECT KartyProjektow.KP_krotkaNazwaProjektu FROM ((KartyProjektow INNER JOIN Ewidencja on Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu) INNER JOIN Uzyszkodnicy on Ewidencja.ID_uzytkownika = Uzyszkodnicy.ID_uzytkownika) WHERE Uzyszkodnicy.ID_uzytkownika = kontoGlobalne "

Jednak to zapytanie powoduje to, że wyskakuje mi okienko do wpisania ID z "palca" czego nie chcę. Znalazłem na jednym forum: klik informację, że potrzebuję tę zmienną globalną utworzyć poza formsem, w standardowym module. Nie bardzo wiem jak uzyskać ten standardowy model, jak przekazać mu wartość tej zmiennej?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1
Kopiuj
strSql = "SELECT KartyProjektow.KP_krotkaNazwaProjektu FROM ((KartyProjektow INNER JOIN Ewidencja on Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu) INNER JOIN Uzyszkodnicy on Ewidencja.ID_uzytkownika = Uzyszkodnicy.ID_uzytkownika) WHERE Uzyszkodnicy.ID_uzytkownika = " & kontoGlobalne
Tomasz Papryka
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Medelin
  • Postów: 100
0

@Panczo: Jak ustawiam wartość "na sztywno" (1 czy 2) składnia nie wyrzuca błędu. Gdy dołączyłem fragment: & kontoGlobalne wyskakuje błąd: Błąd składniowy (brak operatora) w wyrażeniu kwerendy "Uzyszkodnicy.ID_uzytkownika =.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

Prawdopodobnie w zmiennej kontoGlobalne nie masz nic, z Tojego kodu nie widać jak i gdzie ją deklarujesz. Jednak zamiast robic globalną zmienną, przekaż jej wartość jako argument otwarcia

Czyli w kodzie:

Kopiuj
DoCmd.OpenForm "Formularz1", acNormal, , , , , kontoGlobalne

A później w formularz1:

Kopiuj
 strSql = "SELECT KartyProjektow.KP_krotkaNazwaProjektu FROM ((KartyProjektow INNER JOIN Ewidencja on Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu) INNER JOIN Uzyszkodnicy on Ewidencja.ID_uzytkownika = Uzyszkodnicy.ID_uzytkownika) WHERE Uzyszkodnicy.ID_uzytkownika = " & Me.OpenArgs

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.