Parametri Datetime con SQL nativo

lunedì 23 marzo 2009 - 23.19

Aragorn2004 Profilo | Newbie

Ciao ho questo diavolo di problema: VB6 + CR8 + SQL2K.

Il report costruito dentro Crystal Report usa il collegamento nativo a SQL SERVER. La store procedure vuole 2 parametri di tipo datetime.
Nell'ambiente CR tutto funziona. Quando apro il report da VB6 mi esce il seguente errore:

Errore SQL generale controllore i messaggi di SQL SERVER.
Apro il file SQLSVR.ERR e dentro c'è questo messaggio

SQL Server Message
Number : 8114
State : 4
Severity: 16
Text : Si è verificato un errore durante la conversione del tipo di dati da varchar a datetime.
Server : MYSERVER
Procname: qview_ListaArticoliOrdinati

-----------------------------------
-Aggiunto dopo
-Cambiando il driver sul REPORT da SQL a ODBC e cambiando la DLL nel codice il report funziona
- Solo che sarebbe una rottura non da poco dover aggiungere l'ODBC e non sfruttare il driver nativo
-----------------

Questo è una parte di codice. Per i valori ho aggiunto un secondo alla data passata in modo tale che riesco a passare anche i secondi.
Credevo che fosse questo il problema ma invece niente.

Data1 viene valorizzato con una stringa tipo "01-01-2005" e così DATA2.

Se faccio saltare l'impostazione dei parametri il report funziona chiedendomi a video l'inserimento dei parametri.

Grazie per la collaborazione

------------------------------------------------------------------------------------------------------------------------------------
Dim cd1 as date,cd2 as date
Dim Data1 as string,Data2 as string

CRXApp.LogOnServer "p2ssql.dll", RifAmbiente.Server, "COnt", "saSystem", "password"
Set pReport = CRXApp.OpenReport(RifAmbiente.PathReport & "\" & r)

cd1 = CDate(DateAdd("s", 1, CDate(Data1)))
cd2 = CDate(DateAdd("s", 1, CDate(Data2)))

On Error GoTo ERR1
.....

For Each crxPar In myrep.ParameterFields
crxPar.ClearCurrentValueAndRange
Next
......
With myrep
For Each crxPar In myrep.ParameterFields
Select Case LCase(crxPar.Name)
Case "{?@pardata1}"
crxPar.AddCurrentValue cd1
Case "{?@pardata2}"
crxPar.AddCurrentValue cd2
Case Else
End Select
Next
End With
............






freeteo Profilo | Guru

Ciao,
sinceramente non ho mai usato la tua versione di Crystal, però mi viene da pensare che sia possibile oltre che settare il valore al parametro che gli passi, anche il suo tipo (magari con qualche proprietà come "ParameterValueType") e quindi dopo avergli passato il valore in formato data, dirgli di "trattarlo" come data, che di default non sia proprio stringa quindi poi passandolo a sql viene dato qul messaggio.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5