Citat:
'Oćureći, bez subformi nema smisla...
Ovo je veoma tacno. Subforme su razlog sto je Access najbolji alat za programiranje front enda za baze podataka. Tacka. Medjutim, i med je gorak kad se mnogo jede. Subforma je skup objekat i ako nema sustinske potrebe za subformom, onada je treba izbegavati. Svrha subforme je da omoguci unos podataka. Ako je za citanje, list bopx sluzi sasvim OK, ili otvaranje posebne datasheet forme kojoj se salju parametri da vrati sto manje rekorda.
Citat:
Procedure sam, bar one najjednostavnije, uspeo nekako da kreiram, i umem da ih pozovem kroz Pass-Through kveri, ali ne znam kako da prosledim parametre (na pr. datum ili sl.) iz Accessa.
Mislim, čitao sam kao neke tekstove po Netu i tako to, ali nije mi baš jasno

Može li ukratko kako se to uopšte radi, i dal' ima smisla takav pristup?
Ponovo pun pogodak. Stored procedure JESU najbolji nacin da s epristupa podacima na bazi SQL tipa. Ako znas da ih pises, pozivanje je lako - kroz pass thru kveri. Kako posalti parametre? U ADO mislim da mogu da se posalju parametri, bas kao parametri, ali ja to ne radim, malo sam zastareo. Koristim pass thru kverija i to ovako:
Za svaku proceduru, u nekom modulu napravim malu funkciju koja radi sve sto mi treba. Parametri funkcije odgovaraju parametrima stored procedure. Kad pozovem funkciju, posaljem joj parametre. FUnkcija sagradi string koji kad na kraju izgleda bas kao SQL narednba za pozivanje stored procedure sa rucno unetim parametrima....
Prinicp je slican onome sto smo vec radili - menjamo SQL za qdef. U ovom slucaju SQL je poziv izvrsenja stored procedure, 'EXECUTE procMyproc....'
Evo ti primer:
Code:
Function ShowSchoolSummary_SQL(intProjectID As Integer, _
lngSchMident As Long, _
strLAng As String, _
strQueryName As String) As Boolean
'Sample call: ? ShowSchoolSummary_SQL(51,14,"F","StudentSummary_Phase")
' ? ShowSchoolSummary_SQL(51,19,"E","StudentSummary_Phase")
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Const QUERY_NAME As String = "qrySchool_Summary"
'qrySchool_Summary je pass thru, returns records = true
On Error GoTo ERROR_CODE:
'Ovako treba da izgleda strSQL
'Execute spSDC_ConstructStudentSummary
' @ProjectID=52
' , @SchMident=19
' , @Lang='E'
' , @QryName='StudentSummary_Phase' --- 187
'Ajde da sagradimo strSQL:
strSQL = " Execute dbo.spSDC_ConstructStudentSummary " _
& vbCrLf & " @ProjectID = " & intProjectID _
& vbCrLf & ", @SchMident =" & lngSchMident _
& vbCrLf & ", @Lang ='" & strLAng & "'" _
& vbCrLf & ", @QryName ='" & strQueryName & "'"
'lepo je videti strSQL, da moze da se testira
Debug.Print
Debug.Print strSQL
Debug.Print
'Update qdef - ovo moze da se uradi i u samoj funkciji, ovde
'Medjutim , ja koristim funkciju (imas je ispod)
If Not UpdateQdef(strQdefNAme:=QUERY_NAME, strSQL:=strSQL) Then
GoTo ERROR_CODE
End If
'Pozovi pass thru kveri, ako hoces, ne more, moze da se veze i na formu ako hoces, ali POSLE izvrsenja ove funkcije
DoCmd.OpenQuery QueryName:=QUERY_NAME, view:=acViewNormal, datamode:=acReadOnly
ShowSchoolSummary_SQL = True
Exit_Here:
On Error Resume Next
Exit Function
ERROR_CODE:
ShowSchoolSummary_SQL = False
Select Case Err.Number
Case Else
MsgBox "Error " & Err.Number & vbCrLf & Err.description, vbCritical, "ShowSchoolSummary_SQL Error"
End Select
Resume Exit_Here
End Function
Code:
Function UpdateQdef(strQdefNAme As String, strSQL As String) As Boolean
'Purpose: set up pass through query
'
Dim db As DAO.Database
Dim qDef As QueryDef
On Error GoTo ERROR_CODE:
Set db = GetCurrentDB
Set qDef = db.QueryDefs(strQdefNAme)
qDef.sql = strSQL
Exit_Here:
On Error Resume Next
Set db = Nothing
Set qDef = Nothing
Exit Function
ERROR_CODE:
UpdateQdef = False
Select Case Err.Number
Case Else
MsgBox "Error " & Err.Number & vbCrLf & Err.description, vbCritical, "UpdateQdef Error"
End Select
Resume Exit_Here
End Function