allora cerco di spiegarmi bene.
io ho una tabella province composta dai seguenti campi
codprovincia
codregione
nomeprovincia
sull'evento keyup di una textbox io scrivo questo codice:
il quale mi permette di richiamare questa sub:
Private Sub caricaprovincia(ByVal provincia As String)
Dim ObjProvincia, oProvincia As New PropertyProvincia
Dim Read_record_Prov As New GestoreProvincia
ObjProvincia.Provincia = provincia
oProvincia = Read_record_Prov.CaricaRec(ObjProvincia)
If IsNothing(oProvincia.Provincia) = False Then
Me.TextBox6.Text = oProvincia.Provincia
Me.TextBox14.Text = CStr(oProvincia.CodiceProvincia)
Me.TextBox15.Text = CStr(oProvincia.CodiceRegione)
Me.TextBox6.SelectionStart = provincia.Length
Me.TextBox6.SelectionLength = Me.TextBox6.TextLength - provincia.Length
End If
End Sub
che mi permette mediante questa classe:
Public Function CaricaRec(ByVal ObjProvincia As PropertyProvincia) As PropertyProvincia
Dim oProvincia As PropertyProvincia = New PropertyProvincia
Try
SqlCmd.CommandText = "GetProvincia"
SqlCmd.Parameters.Add("@Provincia", SqlDbType.VarChar).Value = ObjProvincia.Provincia
SqlCmd.Connection = Db
SqlCmd.CommandType = CommandType.StoredProcedure
SqlDr = SqlCmd.ExecuteReader
If SqlDr.Read() Then
oProvincia.CodiceProvincia = SqlDr.GetSqlInt32(0).Value()
oProvincia.Provincia = SqlDr.GetSqlString(1).Value
oProvincia.CodiceRegione = SqlDr.GetSqlInt32(2).Value
End If
Return oProvincia
Catch ex As Exception
Throw ex
Finally
SqlDr.Close()
SqlCmd.Parameters.Clear()
SqlCmd.Dispose()
End Try
End Function
di richiamare questa stored e ricercare le province man mano che digito la parola:
ALTER PROCEDURE [dbo].[GetProvincia]
(
@Provincia Varchar(250)=NULL
)
AS
BEGIN
IF @Provincia IS NULL OR LEN(@Provincia) = 0
SELECT codprov,descprov,codregione
FROM dbo.Province
WHERE 1 = 0
ELSE
SELECT codprov,descprov,codregione
FROM dbo.Province
WHERE descprov LIKE @Provincia + N'%'
END
visto che il procedimento è troppo lento perchè avviene connesso ad un db remoto, ho pensato di caricare tutte le province nella tabella di un dataset al momento dell'apertura della form e poi lavorare con la ricerca in locale...
Sono riuscito a caricare tutti i record nella tabella dataset. Ma non riesco a fare la ricerca come la facevo prima utilizzando ogni volta la stored.
di seguito ho scritto il codice che utilizzo per la ricerca nella tabella dataset:
Private Province As DataSet1.ProvinceDataTable
Private RowProvince As DataSet1.ProvinceRow
Private ObjProvincia, oProvincia As New PropertyProvincia
Private ProvColl As New ProvinciaCollection
Private Read_record_Prov As New GestoreProvincia
caricoi dati nel dataset:
ProvColl = Read_record_Prov.CaricaRecAll(ObjProvincia)
For i As Integer = 0 To ProvColl.Count - 1
REM=====SALVO I DATI NEL DATASET DELL'ALBERGO=====
Province = New DataSet1.ProvinceDataTable
RowProvince = CType(Province.NewRow, DataSet1.ProvinceRow)
RowProvince.NomeProvincia = ProvColl.Item(i).Provincia
RowProvince.CodiceProvincia = ProvColl.Item(i).CodiceProvincia
RowProvince.CodiceRegione = ProvColl.Item(i).CodiceRegione
Province.Rows.Add(RowProvince)
Next i
utilizzando questa classe e stored:
classe:
Public Function CaricaRecAll(ByVal ObjProvincia As PropertyProvincia) As ProvinciaCollection
Dim ProvColl As New ProvinciaCollection
SqlCmd.CommandText = "GetProvincia_1"
Try
SqlCmd.Connection = Db
SqlCmd.CommandType = CommandType.StoredProcedure
SqlDr = SqlCmd.ExecuteReader
While SqlDr.Read
ObjProvincia = New PropertyProvincia
ObjProvincia.CodiceProvincia = SqlDr.GetSqlInt32(0).Value
ObjProvincia.Provincia = SqlDr.GetSqlString(1).Value
ObjProvincia.CodiceRegione = SqlDr.GetSqlInt32(2).Value
ProvColl.Add(ObjProvincia)
End While
Catch ex As Exception
Throw ex
Finally
SqlDr.Close()
SqlCmd.Parameters.Clear()
SqlCmd.Dispose()
End Try
Return ProvColl
End Function
Stored:
ALTER PROCEDURE [dbo].[GetProvincia_1]
AS
BEGIN
SELECT *
FROM dbo.Province
END
infine ecco come effettuo la ricerca e secondo me dopo sta l'errore:
Private Sub caricaprovincia(ByVal provincia As String)
If IsNothing(RowProvince.NomeProvincia) = False Then
Me.TextBox6.Text = RowProvince.NomeProvincia
Me.TextBox14.Text = CStr(RowProvince.CodiceProvincia)
Me.TextBox15.Text = CStr(RowProvince.CodiceRegione)
Me.TextBox6.SelectionStart = provincia.Length
Me.TextBox6.SelectionLength = Me.TextBox6.TextLength - provincia.Length
End If
End Sub
aiutatemi help Me!!!
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com