Un aiuto x piacere su date e affini

venerdì 30 gennaio 2004 - 14.41

lobax Profilo | Junior Member

Ciao a tutti,
Chiedo un aiuto per un problema di interrogazione su access con date.
per far capire il problema posto un pezzo di codice:
utilizzo un componente funzionale per la logica di accesso ai dati, il probema per ora e semplicemente quello di passare i parametri alla query:
questa è la funzione incapsulata nel componente:
--
Public Function FindSpace(ByVal data As DateTime, ByVal ora As String, ByVal IDS As Integer) As Integer
Dim BSconn As OleDbConnection = New OleDbConnection(ConfigurationSettings.AppSettings("connString"))
Dim sql As String = "SELECT Appuntamento.UID, Appuntamento.IDS, Appuntamento.Data, Appuntamento.ora, Servizi.Stato FROM Servizi INNER JOIN Appuntamento ON Servizi.IDS = Appuntamento.IDS WHERE Appuntamento.data=? And Appuntamento.ora= ? And Appuntamento.ids=? And Servizi.stato=1"
BSconn.Open()
Dim cmd As New OleDbCommand(sql, BSconn)
cmd.CommandType = CommandType.Text
Dim parData As New OleDbParameter("@data", OleDbType.Date)
parData.Value = data
cmd.Parameters.Add(parData)
Dim parOra As New OleDbParameter("@ora", OleDbType.Char, 11)
parOra.Value = ora
cmd.Parameters.Add(parOra)
Dim ParIds As New OleDbParameter("@ids", OleDbType.Integer)
ParIds.Value = IDS
cmd.Parameters.Add(ParIds)
Dim result = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Return result

tutti i parametri sono valorizzati e nel db il record esiste, xchè il datareader mi restituisce sempre un valore falso, nella pagina ho 3 controlli 2 dropdl e un datepicker
li passo così x ora mi serve solo capire se trova qualche cosa nel db o meno.
------------------------------------
Private Sub BntFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BntFind.Click
Dim FindApp As BeautySite.Appuntamenti = New BeautySite.Appuntamenti
Dim x As Boolean = FindApp.FindSpace(CalePop.SelectedDate, DrOra.SelectedValue, DrService.SelectedValue).Read
If x = False Then
L1.Text = x
BntFind.Visible = False
Pnl.Visible = True
Else
L1.Text = "ok"
End If
End Sub
-------------
siccome non riuscivo a capire ho fatto un ulteriore test, ho creato un semplice webform di prova con 3 textbox
--
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim data As DateTime = CDate(Request.Params("data"))
Dim ora As String = Request.Params("ora")
Dim ids As Integer = CInt(Request.Params("ids"))

Dim x As BeautySite.Appuntamenti = New BeautySite.Appuntamenti
Dim y As oledbdatareader = x.FindSpace(data, ora, ids)
While y.Read

Response.Write(y("data"))
Response.Write(y("ora"))
Response.Write(y("ids"))
End While
y.Close()
End Sub

qui mi da un errore di Cast from string "1/26/2004" to type 'Date' is not valid.
ci risiamo con il casting, dove sbaglio?
grazie ciao

Brainkiller Profilo | Guru

Secondo me quel casting non si può fare, io proveri a fare così:

Dim data As DateTime =DateTime.Parse(Request.Params("data"))

ciao
david

lobax Profilo | Junior Member

ciao,
dunque questo mi da un errore già nell'intellisense
(y("data").ToString("dd/MM/yyy")), posso fare al limite:
(y("data").ToShortDateString("dd/MM/yyy")).

invecie per quanto riguarda la variabile "data":

Dim data As DateTime = Convert.ToDateTime(Request.Params("data"))
oppure:
Dim data As DateTime = DateTime.parse(Request.Params("data"))
mi restituisce:
String was not recognized as a valid DateTime.
Line 33: Dim data As DateTime = Convert.ToDateTime(Request.Params("data")),
ho controllato nel debug la variabile "data" è sempre valorizzata a : data = #12:00:00 AM# anche a text box vuota.

nn ne posso + grazie per l'aiuto

lobax Profilo | Junior Member

ciao,
il casting dovrebbe essere a posto cmq non mi restituisce nessuna riga il datareader, y e la variabile assegnata al datareader, questo è output del debug per y:
Depth 0 Integer
FieldCount 4 Integer
HasRows False Boolean
IsClosed False Boolean
Item <cannot view indexed property> Object
RecordsAffected 0 Integer

a questo punto spero non vi disturbi se allego :
1 la query in access
2 la funzione incapsulata nella classe
3 il file cb delle text box
sono poche righe , spero qualcuno possa trovare il tempo di provarlo un attimo, sarò felice di farmi insultare se mi aiutate.
grazie raga
ciao

lobax Profilo | Junior Member

nessuno riesce a darmi una mano?
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