MS ACCESS - pisanie kodu zapytań pod przyciskiem.

0

Posiadam jakiś formularz, na formularzu jest jakiś przycisk.

Po naciśnięciu przycisku chciałbym aby wykonało się przykładowe zapytanie:

Select *
From
TestowaBaza

W właściwościach, w sekcji zdarzenia widzę tylko konstruktor kodu (VBA), tworzenie makr i coś tam trzeciego (czego też nie potrzebuję). Gdzie mogę lub w jaki sposób mogę wykonywać moje zapytania dla danego przycisku?

2

Ale zastanów się... Jak to chcesz wykonać? Rozumiem UPDATE, DELTE, które nie zwracaja wyników, ale SELECT? Wykonasz i co? Gdzie wyniki mają się zmaterializować?

0

@Marcin.Miga: Chcę generalnie zrobić coś takiego:

Private Sub Polecenie0_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim rst As Recordset
Dim product As String
Dim db As Database
zmienna = Kombi5.Value

Set db = CurrentDb

Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu =" & zmienna)
Set rst = Nothing
MsgBox rst
End Sub

Wyskakuje mi błąd taki:
Run-time error '3075':
Błąd składniowy (brak operatora) w wyrażeniu kwerendy KartyProjektow.KP_krotkaNazwaProjektu =Monitoring kotłowni.

1

Domyślam się, że KartyProjektow.KP_krotkaNazwaProjektu to String. Umieść zmienna w apostrofach.

0

@Marcin.Miga:
Tak:

Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu =" & 'zmienna')

czy tak?

Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu = & 'zmienna'")

W pierwszym wypadku cała ta linijka podświetla się na czerwono, a w drugim dostajemy taki piękny komunikat:
Run-time error '3075':
Błąd składniowy (brak operatora) w wyrażeniu kwerendy KartyProjektow.KP_krotkaNazwaProjektu = & 'zmienna'".

1
Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu = '" & zmienna & "' ")
0

@Marcin.Miga:
A czy jest jakiś prosty sposób aby wyświetlić co zwraca ten rst? Bo za pomocą "msgbox" wywala błąd. Chciałbym zobaczyć co otrzymuję po wykonaniu kodu.

2

Pomysl nad kodem, któóry napisałeś:

'Pobierz dane do recorseta
Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu =" & zmienna)
'Zamknij recordseta
Set rst = Nothing
'pokarz recordseta
MsgBox rst

Jak chcesz pokazać coś co linijkę wcześniej zamknąłeś?

Powinno być raczej tak:

Set rst = db.OpenRecordset("SELECT Ewidencja.ID_ewidencji FROM KartyProjektow INNER JOIN Ewidencja ON Ewidencja.ID_kartyProjektu = KartyProjektow.ID_kartyProjektu WHERE KartyProjektow.KP_krotkaNazwaProjektu = '" & zmienna & "' ")

'sprawdź czy pobrał jakies dane
if rst.RecordCount > 0 Then
    'Przejdź do pierwszego recordu w recodsecie
    rst.MoveFirst
    'wyświetl wartość pola 
    MsgBox rst!ID_Ewidencji
Else
    'blok kodu jak nie ma danych
End if

'Posprzątaj
rst.Close
Set rst = Nothing

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