🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#137100
Author: alex andryt
Date: Wed, 03 Feb 2016 20:22
111 lines
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
#137101
Author: Smyk
Date: Thu, 04 Feb 2016 09:56
17 lines
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
#137102
Author: alex andryt
Date: Thu, 04 Feb 2016 16:48
7 lines
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