Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Trying to update crystal reports parameter in vb6

Status
Not open for further replies.

dbadamion

IS-IT--Management
Aug 2, 2007
11
US
I am trying to update crystal reports XI,parameters dynamically in Visual Basic 6.0. The code below works but the default value in report options gets cleared when the report is saved can someone help. In the code below I do not delete "[ALL]" default value but when the report is saved it gets deleted. I created a class to access the database





Public Function RunUpdate()
'On Error GoTo geterror
Dim CrApp As CRAXDRT.Application
Dim x As Integer
Dim c As Integer

Dim CrRep As CRAXDRT.Report
Dim rs As New CLSado 'Table
Dim rsRunQry As New CLSado 'run SQL
Dim rsRunDual As New CLSado 'run Dual
Dim sdefault As String
Dim ilist As Long

'Dim rsError As New CLSado 'Write Error


Set CrApp = New CRAXDRT.Application

rs.pathprop = strdbPath
rs.SQLProp = "select ID,ReportName,TempDirectory , Path , ParameterName, ParameterSQL , CreateBackup ,DefaultPara from Parameter where Active = 'Yes' and ParameterName is not null"
rs.data.MoveFirst

sReportName = rs.data!ReportName
sTempDirectory = rs.data!TempDirectory
sFullPath = rs.data!path
sParameterName = rs.data!parameterName
sParameterSQL = rs.data!ParameterSQL
sTempDirectory = Replace(sTempDirectory, ".rpt", (sTimeStamp & ".rpt"))
sCreateBackup = rs.data!CreateBackup
sID = rs.data!Id
sDefaultPara = IIf(IsNull(rs.data!DefaultPara) = True, "", rs.data!DefaultPara)


For x = 1 To icount Step 1




'FileCopy "C:\crtests\Report1.rpt", "C:\Temp\Report1.rpt"
FileCopy sFullPath, sTempDirectory
Set CrRep = CrApp.OpenReport(sTempDirectory)
ilist = (CrRep.ParameterFields.GetItemByName(sParameterName).NumberOfDefaultValues)
'ilist = (CrRep.ParameterFields.GetItemByName(sParameterName).NumberOfDefaultValues - 1)
For c = 1 To ilist Step 1

If c > ilist Then
Exit For
End If
If CrRep.ParameterFields.GetItemByName(sParameterName).GetNthDefaultValue(c) = "[ALL]" Or CrRep.ParameterFields.GetItemByName(sParameterName).GetNthDefaultValue(c) = "ALL" Then
'ilist = ilist - 1
Else
CrRep.ParameterFields.GetItemByName(sParameterName).DeleteNthDefaultValue (c)
ilist = ilist - 1
c = c - 1
End If
' c = c + 1
Next
'Do Until CrRep.ParameterFields.GetItemByName(sParameterName).NumberOfDefaultValues = 0
'c = c + 1
'If CrRep.ParameterFields.GetItemByName(sParameterName).GetNthDefaultValue(1) = "[ALL]" Or CrRep.ParameterFields.GetItemByName(sParameterName).GetNthDefaultValue(1) = "ALL" Then
'Else
'CrRep.ParameterFields.GetItemByName(sParameterName).DeleteNthDefaultValue (1)
'End If
'c = c + 1
'Loop

'good If CStr(sDefaultPara) <> "" And InStr(sDefaultPara, "*") = 0 Then
'good If (InStr(sDefaultPara, "select") <> 0 And InStr(sDefaultPara, "from") <> 0) Or (InStr(sDefaultPara, "max") <> 0 And InStr(sDefaultPara, "select") <> 0 And InStr(sDefaultPara, "from") <> 0) Or (InStr(sDefaultPara, "max") <> 0 And InStr(sDefaultPara, "select") <> 0 And InStr(sDefaultPara, "from") <> 0) Then
'good rsRunDual.pathprop = strdbPath
'good rsRunDual.SQLProp = sDefaultPara
'good rsRunDual.data.MoveFirst
'good sdefault = rsRunDual.data(0)
'CrRep.ParameterFields.GetItemByName(sParameterName).AddDefaultValue (sdefault)
'CrRep.ParameterFields.GetItemByName(sParameterName).AddCurrentValue(

'good CrRep.ParameterFields.GetItemByName(sParameterName).AddCurrentValue (sdefault)
'good End If
'good End If
'get
rsRunQry.pathprop = strdbPath
rsRunQry.SQLProp = sParameterSQL
'rsRunQry.data.MoveFirst


Do Until rsRunQry.data.EOF = True
'Loop
'CrRep.ParameterFields.GetItemByName(sParameterName).AddDefaultValue (rs.data!sParameterName)
If InStr((rsRunQry.data(0)), "All") = 0 And InStr((rsRunQry.data(0)), "[ALL]") = 0 And InStr((rsRunQry.data(0)), "ALL") = 0 Then
CrRep.ParameterFields.GetItemByName(sParameterName).AddDefaultValue (rsRunQry.data(0))
End If
rsRunQry.data.MoveNext

Loop

'Save
CrRep.SaveAs sFullPath, crDefaultFileFormat

'Delete File
If sCreateBackup = "No" Then
Kill (sTempDirectory)
End If

If x < icount Then
rs.data.MoveNext
sReportName = rs.data!ReportName
sTempDirectory = rs.data!TempDirectory
sFullPath = rs.data!path
sParameterName = rs.data!parameterName
sParameterSQL = rs.data!ParameterSQL
sTempDirectory = Replace(sTempDirectory, ".rpt", (sTimeStamp & ".rpt"))
sID = rs.data!Id
sCreateBackup = rs.data!CreateBackup
sDefaultPara = IIf(IsNull(rs.data!DefaultPara) = True, "", rs.data!DefaultPara)
End If
Next x


'Release the references
rsRunQry.data.Close
Set rsRunQry = Nothing
rs.data.Close
Set rs = Nothing
Set CrRep = Nothing
Set CrApp = Nothing


'geterror:

'rsError.pathprop = strdbPath
' sError = "insert into errorlog (ReportID ,Message , Date) values (" & sID & sReportName & "," & Err.Description & "," & sTimeStamp & ")"

' rsError.SQLProp = sError
'If rsError.data.State <> 0 Then
' rsError.data.Close
' Set rsError = Nothing
' End If
End Function






Public Function CountRecords() As Integer
'On Error GoTo geterror
Dim rsCnt As New CLSado
rsCnt.pathprop = strdbPath

rsCnt.SQLProp = "select count(*) AS Cnt from Parameter where Active = 'Yes' and ParameterName is not null "

icount = rsCnt.data!Cnt

CountRecords = rsCnt.data!Cnt


'geterror:

' rsError.pathprop = strdbPath
'sError = "insert into errorlog (ReportID ,Message , Date) values (" & sID & sReportName & "," & Err.Description & "," & sTimeStamp & ")"

'rsError.SQLProp = sError

'If rsError.data.State <> 0 Then
'rsError.data.Close
'Set rsError = Nothing
'End If
End Function
 
Are you familiar with how to update parameters in crystal report using VB6
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top