Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages
Started by alex andryt
Wed, 03 Feb 2016 20:22
ACCESS 2003 - kwerenda parametryczna - zęby w ścianie
Author: alex andryt
Date: Wed, 03 Feb 2016 20:22
Date: Wed, 03 Feb 2016 20:22
111 lines
6541 bytes
6541 bytes
Szanowni forumowicze :),
do funkcji z kwerendą parametryczną, próbuje wrzucić jeden dodatkowy parametr. I dopóki go nie wrzucam, funkcja działa. Ale jak wprowadzam swoje cztery wpisy, to funkcja się wysypuje. Moje cztery wpisy zakomentarzowałem. Poradźcie coś proszę.
Public Function fWstawFirmeAdresataZMediumDoZadania(IdentyfikatorZadania As Long, lst As Access.ListBox, Optional strNazwaNosnikaMedium As String) As Boolean
On Error GoTo err_exit
Dim db As Object 'DAO.Database
Dim qr As Object
Dim s As String
Dim sql As String
Dim K1 As Long, K2 As Long
sql = ""
'blok parametrow:
sql = sql & vbNewLine & " PARAMETERS "
sql = sql & vbNewLine & " [parZadanieID] Long, "
sql = sql & vbNewLine & " [parElementTyp] Text (255), "
sql = sql & vbNewLine & " [parRola] Text (255), "
sql = sql & vbNewLine & " [parUtworzonyPrzez] Text (255), "
sql = sql & vbNewLine & " [parDataUtworzenia] DateTime; "
''' ZAPIS 1, ktorym rozsypuje funkcję
''' sql = sql & vbNewLine & " [parElementMediumTyp] Text (255), "
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' kwerenda dodajaca
sql = sql & vbNewLine & " INSERT INTO ZadanieRekord "
sql = sql & vbNewLine & " ( IDElementu, "
sql = sql & vbNewLine & " Element, "
sql = sql & vbNewLine & " Skoroszyt, "
sql = sql & vbNewLine & " ElementMediumTyp, " '3
sql = sql & vbNewLine & " ElementMedium, "
sql = sql & vbNewLine & " IdZadania, "
sql = sql & vbNewLine & " ElementTyp , "
sql = sql & vbNewLine & " Rola, "
sql = sql & vbNewLine & " UtworzonyPrzez, "
sql = sql & vbNewLine & " DataUtworzenia ) "
sql = sql & vbNewLine & " SELECT "
sql = sql & vbNewLine & " f.IdFirmy, "
sql = sql & vbNewLine & " f.Nazwa, "
sql = sql & vbNewLine & " f.Skoroszyt, "
sql = sql & vbNewLine & " m.RodzajNosnika, " '3
sql = sql & vbNewLine & " m.NumerWartosc, "
sql = sql & vbNewLine & " [parZadanieID], "
sql = sql & vbNewLine & " [parElementTyp], "
sql = sql & vbNewLine & " [parRola], "
sql = sql & vbNewLine & " [parUtworzonyPrzez], "
sql = sql & vbNewLine & " [parDataUtworzenia] "
''' ZAPIS 2, ktorym rozsypuje funkcję
''' sql = sql & vbNewLine & " [parElementMediumTyp], "
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sql = sql & vbNewLine & " FROM "
sql = sql & vbNewLine & " ( Firma AS f "
sql = sql & vbNewLine & " INNER JOIN "
sql = sql & vbNewLine & " MediumFirmaOsoba AS mfo "
sql = sql & vbNewLine & " ON f.IdFirmy = mfo.IdFirmy) "
sql = sql & vbNewLine & " INNER JOIN "
sql = sql & vbNewLine & " Medium As m "
sql = sql & vbNewLine & " ON mfo.IdMedium = m.IdMedium "
sql = sql & vbNewLine & " WHERE "
sql = sql & vbNewLine & " f.IdFirmy In (XXXXXXXX) "
''' ZAPIS 3, ktorym rozsypuje funkcję
''' sql = sql & vbNewLine & " AND m.RodzajNosnika=[parElementMediumTyp])"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sql = sql & vbNewLine & " AND "
sql = sql & vbNewLine & " NOT Exists ( "
sql = sql & vbNewLine & " SELECT * from ZadanieRekord zr "
sql = sql & vbNewLine & " WHERE f.IdFirmy = zr.IDElementu "
sql = sql & vbNewLine & " AND zr.IdZadania=[parZadanieID])"
s = fGetIDsFromList(lst, K1)
If Len(s) > 0 Then
sql = Replace(sql, "XXXXXXXX", s)
'' tutaj -->
Debug.Print sql
Set db = CurrentDb
Set qr = db.CreateQueryDef("", sql)
With qr
.Parameters("parZadanieID").Value = IdentyfikatorZadania
''' ZAPIS 4, ktorym rozsypuje funkcję
''' .Parameters("parElementMediumTyp").Value = strNazwaNosnikaMedium
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
.Parameters("parElementTyp").Value = "firma/oddział"
.Parameters("parRola").Value = "Adresat"
.Parameters("parUtworzonyPrzez").Value = CurrentUser
.Parameters("parDataUtworzenia").Value = Now
.Execute dbFailOnError
K2 = qr.RecordsAffected
End With
MsgBox "Pozycji ogółem: " & K1 & ", dodano: " & K2
Else
MsgBox "Nic nie wybrano!"
End If
function_exit:
On Error GoTo 0
Exit Function
err_exit:
MsgBox "Error " & Err.Number & " (" & Err.Description & "), procedure fWstawFirmeAdresataZMediumDoZadania"
Resume function_exit
End Function
Re: ACCESS 2003 - kwerenda parametryczna - zęby w ścianie
Author: Smyk
Date: Thu, 04 Feb 2016 09:56
Date: Thu, 04 Feb 2016 09:56
17 lines
1752 bytes
1752 bytes
alex andryt wrote at Mi 03.02.2016 21:22: > /.../ Poradźcie coś proszę. Na początek parę wskazówek do składni SQL: Lista (blok) paremetrów skałda sie z ich nazw i typu danych oddzielonych od siebie przecinkami. Po ostatnim paremetrze następuje średnik. Po frazie SELECT następuje lista nazw kolumn tabeli oddzielenych od siebie przecinkiem. Po ostatniej nazwie kolumny, przed frazą FROM nie ma żadnego znaku interpunkcyjnego. Wyrażenie "m.RodzajNosnika=[parElementMediumTyp]" kończy się nawiasem zamykającym. Gdzie jest korespondujacy nawias otwierający ? Ciao, Smyk
Re: ACCESS 2003 - kwerenda parametryczna - zęby w ścianie
Author: alex andryt
Date: Thu, 04 Feb 2016 16:48
Date: Thu, 04 Feb 2016 16:48
7 lines
1829 bytes
1829 bytes
W dniu czwartek, 4 lutego 2016 10:56:59 UTC+1 użytkownik Smyk napisał: > Na początek parę wskazówek do składni SQL: Smyk, chciałbym Tobie bardzo serdecznie podziękować za pomoc. Ja zawsze robię błędy z przecinkami średnikami i nawiasami (i innymi znakami interpunkcyjnymi). Dzięki Twojej pomocy, po korekcie, wyszedł też komunikat informujący, że cały 'ZAPIS 2' jest niepotrzebny. Usunąłem go. Teraz testuję działanie. Jeszcze raz dziękuję i pozdrawiam.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads