Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Vb.net gli sviluppatori con mente perversa
martedì 29 giugno 2010 - 10.22
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mar 29 giu 2010 - 10:22
Ciao raga ho da pochissimo iniziato ad usare vb.net è stò impazzendo con i database, dopo una miriade di tempo per capire come fare per usarli ( forse sono io che non capisco ma con il vb6 era tutto molto più facile...) ora non capisco come potermi posizionare su un determinato record.
da quello che ho capito devo usare l'istruzione objCurrencyManager.Position = (indice della riga) ma come posso fare per trovare l'indice della riga ????. appena inserito un nuovo record come posso saperlo ???
Mi date una mano GRAZIE...
Carlik
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 29 giu 2010 - 12:12
>Ciao raga ho da pochissimo iniziato ad usare vb.net è stò impazzendo
>con i database, dopo una miriade di tempo per capire come fare
>per usarli ( forse sono io che non capisco ma con il vb6 era
>tutto molto più facile...) ora non capisco come potermi posizionare
>su un determinato record.
>da quello che ho capito devo usare l'istruzione objCurrencyManager.Position
>= (indice della riga) ma come posso fare per trovare l'indice
>della riga ????. appena inserito un nuovo record come posso saperlo
>???
>Mi date una mano GRAZIE...
Si , ma cosa stai utilizzando ? Il datareader?
Hai studiato ADO ? I vantaggi sono pazzeschi nell'uso di ADO..per non parlare poi di LINQ...
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mar 29 giu 2010 - 12:24
Io uso questo tipo di connessione al database
Imports System.Data
Imports System.Data.OleDb
Public Class Clienti
Dim objConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\database\cliente.mdb;Persist Security Info=False")
Dim objDataAdapter As New OleDbDataAdapter("SELECT * from medico", objConnection)
Dim objDataSet As DataSet
Dim objDataView As DataView
Dim objCurrencyManager As CurrencyManager
Dim newedit As String
Dim KIAVE As String
Private Sub FillDataSetAndView()
' Initialize a new instance of the DataSet object...
objDataSet = New DataSet()
' Fill the DataSet object with data...
objDataAdapter.Fill(objDataSet, "medico")
' Set the DataView object to the DataSet object...
objDataView = New DataView(objDataSet.Tables("medico"))
' Set our CurrencyManager object to the DataView object...
objCurrencyManager = CType(Me.BindingContext(objDataView), CurrencyManager)
'DgViewAllCustomers.DataSource = objDataView
End Sub
Carlik
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 29 giu 2010 - 14:47
In base al tuo codice non capisco a che ti serve l'indice della riga.
A prescindere da questo devi esplorare la datatable 0esima del tuo dataset e accedi direttamente alla riga interessata.
Per esempio se vuoi accedere alla 4°riga della tabella del dataset
ds.tables(0).rows(3)
e così via...
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mar 29 giu 2010 - 15:24
ti spiego quando salvo un nuovo record e faccio il refresh mi si posiziona sul primo record io volevo che si posizionasse sul record appena inserito, se uso rowfilter, da quello che ho capito vi attiva un filtro e visualizzo solo quelli o quello che soddisfa la condizione.
Carlik
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 29 giu 2010 - 16:46
>ti spiego quando salvo un nuovo record e faccio il refresh mi
>si posiziona sul primo record io volevo che si posizionasse sul
>record appena inserito,
Chi si posiziona?
>se uso rowfilter, da quello che ho capito
>vi attiva un filtro e visualizzo solo quelli o quello che soddisfa
>la condizione.
rowfilter mi pare poi sia un metodo del bindingsource , non della datatable...
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mar 29 giu 2010 - 17:46
ti posto il pezzo del programma così forse capisci come uso i database
quello che non capisco e se devo posizionarmi su un particolare record (in vb6 usavo findfirst <criterio di selezione>) come posso fare ... usando l'istruzione position devo passare id della riga come faccio a reperirlo ?
scusami ma trovo complicato il passaggio da vb6 al net
Imports System.Data
Imports System.Data.OleDb
Public Class Clienti
Dim objConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\database\cliente.mdb;Persist Security Info=False")
Dim objDataAdapter As New OleDbDataAdapter("SELECT * from medico", objConnection)
Dim objDataSet As DataSet
Dim objDataView As DataView
Dim objCurrencyManager As CurrencyManager
Dim newedit As String
Dim KIAVE As String
Private Sub FillDataSetAndView()
objDataSet = New DataSet()
objDataAdapter.Fill(objDataSet, "medico")
objDataView = New DataView(objDataSet.Tables("medico"))
objCurrencyManager = CType(Me.BindingContext(objDataView), CurrencyManager)
End Sub
Private Sub BindFields()
TextBox3.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox4.DataBindings.Clear()
TextBox5.DataBindings.Clear()
TextBox3.DataBindings.Add("Text", objDataView, "codice")
TextBox2.DataBindings.Add("Text", objDataView, "ragsoc")
TextBox4.DataBindings.Add("Text", objDataView, "piva")
TextBox5.DataBindings.Add("Text", objDataView, "cf")
End Sub
Private Sub ShowPosition(ByVal tipo As String, ByVal CERCAIL As String)
' Display the current position and the number of records
Select Case tipo
Case "TROVA"
Case "REFRESH"
End Select
Label29.Text = objCurrencyManager.Position + 1 & _
" of " & objCurrencyManager.Count()
End Sub
Private Sub Clienti_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FillDataSetAndView()
ShowPosition("REFRESH", "")
BindFields()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
' Move to Next Record
objCurrencyManager.Position -= 1
ShowPosition("REFRESH", "")
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' Move to Next Record
objCurrencyManager.Position += 1
ShowPosition("REFRESH", "")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
newedit = "NUOVO"
Button3.Visible = True
Button1.Enabled = False
TextBox3.Focus()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If newedit = "NUOVO" Then
Dim objCommand As OleDbCommand = New OleDbCommand()
objConnection.Open()
objCommand.Connection = objConnection
objCommand.CommandText = "INSERT INTO medico (ID,CODICE, RAGSOC,PIVA,CF) VALUES(@id,@CODICE,@RAGSOC,@PIVA,@CF);"
' Dim gk As String = GENERAKIAVE
KIAVE = Format(DateTime.Parse(Now), "dd/MM/yyyy") + Format(DateTime.Parse(Now), "hh:mm:ss")
objCommand.Parameters.AddWithValue("@id", KIAVE)
objCommand.Parameters.AddWithValue("@CODICE", TextBox3.Text)
objCommand.Parameters.AddWithValue("@RAGSOC", TextBox2.Text)
objCommand.Parameters.AddWithValue("@PIVA", TextBox4.Text)
objCommand.Parameters.AddWithValue("@CF", TextBox5.Text)
Try
objCommand.ExecuteNonQuery()
Catch OleDbExceptionErr As OleDbException
MessageBox.Show(OleDbExceptionErr.Message)
End Try
objConnection.Close()
FillDataSetAndView()
BindFields()
ShowPosition("TROVA", KIAVE)
newedit = ""
Button3.Visible = False
Button1.Enabled = True
Else
End If
End Sub
Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged
Dim strval As String
strval = Me.ComboBox4.Text
Select Case UCase(strval)
Case "CODICE"
strval = "CODICE"
Case "RAGIONE SOCIALE"
strval = "RAGSOC"
End Select
objDataView.Sort = strval
ShowPosition("REFRESH", "")
End Sub
Private Sub Button20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click
Select Case UCase(Me.ComboBox1.Text)
Case "[ TUTTI ]"
objDataView.RowFilter = ""
Case "CODICE CLIENTE"
objDataView.RowFilter = "CODICE LIKE '" & TextBox1.Text & "*'"
Case "RAGIONE SOCIALE"
objDataView.RowFilter = "RAGSOC LIKE '" & TextBox1.Text & "*'"
End Select
ShowPosition("REFRESH", "")
End Sub
End Class
Carlik
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 29 giu 2010 - 17:56
>ti posto il pezzo del programma così forse capisci come uso i
>database
>quello che non capisco e se devo posizionarmi su un particolare
>record (in vb6 usavo findfirst <criterio di selezione>)
>come posso fare ... usando l'istruzione position devo passare
>id della riga come faccio a reperirlo ?
>scusami ma trovo complicato il passaggio da vb6 al net
Diciamo che se devi reperire informazioni riguardo alla riga 3 fai così :
dim r as datarow = objDataSet.Tables(0).rows(2)
e poi accedi ai campi che ti interessano così
r("NomeCampo")
Se invece , per esempio sai che devi accedere alla riga con Id = 413 puoi fare così
dim r as datarow = objDataSet.Tables(0).Select("ID=413")(0)
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mer 30 giu 2010 - 09:37
Grazie per l'aiuto ho provato ad usare l'istruzione
Dim R As DataRow = objDataSet.Tables(0).Select("ID='25/06/201006:59:59'")(0)
però il puntatore non mi si posiziona sul record con ID=25/06/201006:59:59 devo aggiungere qualche altra istruzione per posizionarmi sul record
.Tables(0) lo 0 è la tabella del database ? e lo 0 alla fine della riga cosa indica ?
ho provato a cercare in giro ma non ho torvato o non ho capito molto
Grazie ancora per l'aiuto
Carlik
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 30 giu 2010 - 12:15
>Grazie per l'aiuto ho provato ad usare l'istruzione
>
>Dim R As DataRow = objDataSet.Tables(0).Select("ID='25/06/201006:59:59'")(0)
Sei sicuro che come Id della tua tabella hai una data?ricorda che id è un mio esempio che in realtà indica il nome di una colonna.
E inoltre '25/06/201006:59:59' , sei sicuro che non ci siano spazi tra 2010 e 06 ?
>però il puntatore non mi si posiziona sul record con ID=25/06/201006:59:59
>devo aggiungere qualche altra istruzione per posizionarmi sul
>record
Ricorda che non hai puntatori qui!!!
>.Tables(0) lo 0 è la tabella del database ? e lo 0 alla fine
>della riga cosa indica ?
Siccome tables è una collezione di tabelle del dataset tu accedi alla prima tabella del ds...
Ma ti consiglierei di studiare un po' ado....
ste.chi
Profilo
| Newbie
33
messaggi | Data Invio:
mer 30 giu 2010 - 12:41
si io ho un campo del database che si chiama id e il codice l'ho copiato direttamente daldatabase per verificare se si posiziona sul record che desidero
dove posso trovare un semplice manuale che mi faccia capire in maniera semplice come funzionano le ADO
Torna su
Stanze Forum
Elenco Threads
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 !