Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-04-2004, 15:24   #1
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
[vb.net] Dataset

Sono disperato...voglio chiedere una cosa...

io devo modificare dei dati all'interno di un database access...con il datareader riesco a visualizzare i dati all'interno dei controlli ma ovviamente non posso aggiungere righe o aggiornarle...volevo sapere come fare ad associare il mio database al dataset per poter modificarne i dati, aggiungere righe, fare delle select sui rispettivi campi e visualizzare i dati all'interno dei controlli del form...
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2004, 15:56   #2
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Penso valga più di mille parole..

Esempio per provider dati Sql

dim cn as SqlClient.SqlConnection

If Cn.State = ConnectionState.Closed Then
ConnettiDatabase(User) 'mia funz. x la connessione al db
End If
If Cn.State = ConnectionState.Open Then
Da.SelectCommand = New SqlCommand
With (Da.SelectCommand)
.Connection = Cn
.CommandText = Query
.CommandType = CommandType.Text
.ExecuteNonQuery()
End With
Da.Fill(Ds, NomeTbl)
Da.FillSchema(Ds.Tables(NomeTbl), SchemaType.Mapped)
If CaricaCommand Then
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(Da)
Da.UpdateCommand = cb.GetUpdateCommand
Da.InsertCommand = cb.GetInsertCommand
Da.DeleteCommand = cb.GetDeleteCommand
End If
If UseForEvents Then Dt = Ds.Tables(NomeTbl)
End If
Catch err As SqlClient.SqlException
'gestione errore
Finally
Cn.Close()
End Try
End Function

idem se usi un altro provider dati(tipo Oledb o Odbc come nel tuo caso).Riassumo..

imports System.Data.OleDb

Dim conn As New System.Data.OleDb.OleDbConnection(connection)
Dim adapter As New System.Data.OleDb.OleDbDataAdapter
Dim Dataset As DataSet

adapter.SelectCommand = New OleDbCommand(query, conn)
adapter.Fill(dataSet, "NomeTbl")


Ora hai la tua/le tue datatable(dataset.Tables(NomeTbl).ecc...) in memoria.Non ti resta che fare il binding come hai fatto con il datareader.
Per aggiunta/modifica/salvataggio ci sono i relativi metodi all'interno del datatable o nel dataadapter.


Spero di essere stato chiaro e se hai domande..posta
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2004, 16:10   #3
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
Quote:
Originariamente inviato da Geen
Penso valga più di mille parole..

Esempio per provider dati Sql

dim cn as SqlClient.SqlConnection

If Cn.State = ConnectionState.Closed Then
ConnettiDatabase(User) 'mia funz. x la connessione al db
End If
If Cn.State = ConnectionState.Open Then
Da.SelectCommand = New SqlCommand
With (Da.SelectCommand)
.Connection = Cn
.CommandText = Query
.CommandType = CommandType.Text
.ExecuteNonQuery()
End With
Da.Fill(Ds, NomeTbl)
Da.FillSchema(Ds.Tables(NomeTbl), SchemaType.Mapped)
If CaricaCommand Then
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(Da)
Da.UpdateCommand = cb.GetUpdateCommand
Da.InsertCommand = cb.GetInsertCommand
Da.DeleteCommand = cb.GetDeleteCommand
End If
If UseForEvents Then Dt = Ds.Tables(NomeTbl)
End If
Catch err As SqlClient.SqlException
'gestione errore
Finally
Cn.Close()
End Try
End Function

idem se usi un altro provider dati(tipo Oledb o Odbc come nel tuo caso).Riassumo..

imports System.Data.OleDb

Dim conn As New System.Data.OleDb.OleDbConnection(connection)
Dim adapter As New System.Data.OleDb.OleDbDataAdapter
Dim Dataset As DataSet

adapter.SelectCommand = New OleDbCommand(query, conn)
adapter.Fill(dataSet, "NomeTbl")


Ora hai la tua/le tue datatable(dataset.Tables(NomeTbl).ecc...) in memoria.Non ti resta che fare il binding come hai fatto con il datareader.
Per aggiunta/modifica/salvataggio ci sono i relativi metodi all'interno del datatable o nel dataadapter.


Spero di essere stato chiaro e se hai domande..posta



scusami ma sono inesperto al massimo...voglio chiederti un enorme piacere...ho un database di prova, in access sul quale devo svolgere delle ricerche aggiungere righe eliminarle e modificarle...se te lo mando per via email anche con calma avresti il tempo di farmi un piccolo esempio con questo database??se ti creo io il form e ti invio anvìche quello me lo potresti collegare tu...??mi faresti un enorme piacere.
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 07:56   #4
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
dim conn as new System.data.oledb.oledbconnection(connessione
dim dataset as dataset
oledbdataadapter1.selectcomand = new oledbcommand_(comando, connessione)

oledbdataadapter.fill(dataset11)


Sono Arrivato fin qua adesso dovrei inserire una nuova riga all'interno del database access il quale l'ho riferito ad un dataset...come faccio ad inserire un nuovo record???
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 08:31   #5
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Posto

Dim ds As DataSet
Dim da As System.Data.OleDb.OleDbDataAdapter

ds.Tables("NomeTbl").Rows.Add(<row o singoli valori>)
ds.Tables("NomeTbl").Rows(0).Delete()
da.Update(ds.Tables("NomeTbl"))

Attenzione che per eseguire l'update devono essere settati i command di update,delete e add.Questo o lo fai manualmente o devi usare l'oggetto CommandBuilder specifico del provider che stai usando:

Dim CmbBld As New OleDb.OleDbCommandBuilder(da)
da.DeleteCommand = CmbBld.GetDeleteCommand
da.InsertCommand = CmbBld.GetInsertCommand
da.UpdateCommand = CmbBld.GetUpdateCommand


ricordando che questo comodissimo oggetto funziona solo per delle select semplici(niente join ecc..) e che la tabella risultante della query deve avere obbligatoriamente un campo che fa da chiave primaria.
Dai che ti manca quasi solo il bind dopo
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 08:37   #6
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
non ho capito bene a cosa serve il commandbuilder...io nelle proprietà del data adapter vedo che ci sono questi:

insertcommand
deletecommand
update command

con la rispettiva commandtext...
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 08:47   #7
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Si nel DataAdapter ci sono i 3 command contenenti le query per eseguire le operazione di modifica nel db.Verifica se dopo aver fatto il fill della table sono già valorizzate.Se si tanto meglio,non ti serve fare nulla più..ma se esegui solo la Select quelle tre property dovrebbero essere vuote e quindi ti può tornare utile usare il command builder per riempirle automaticamente..
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 08:58   #8
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
scusami adesso ti posto quello che sto facendo sono arrivato quì:


Dim conn As New System.Data.OleDb.OleDbConnection_(OleDbConnection1.ConnectionString)
Dim dataset As DataSet
OleDbDataAdapter1.SelectCommand = New OleDbCommand_(OleDbCommand1.CommandText, conn)
OleDbDataAdapter1.Fill(DataSet11)
OleDbDataAdapter1.FillSchema(DataSet11,_ SchemaType.Mapped, "ArcImpiegati")
Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder_(OleDbDataAdapter1)
dataset.Tables("ArcImpiegati").Rows.Add()

io all'interno del mio database devo inserire 'nome utente','telefono','nome ufficio' come faccio a dirglielo di aggiungerlo...dove inserisco questi valori...mi serve un data row perchè così come mi hai scritto tu non me lo lascia fare.
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 09:12   #9
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
ho fatto cosi e ci sono riuscito però nel mio database access non vedo la riga nuova che ho inserito...

Dim conn As New System.Data.OleDb.OleDbConnection(OleDbConnection1.ConnectionString)
Dim dataset As DataSet
Dim row As DataRow
OleDbDataAdapter1.SelectCommand = New OleDbCommand(OleDbCommand1.CommandText, conn)
OleDbDataAdapter1.Fill(DataSet11)
OleDbDataAdapter1.FillSchema(DataSet11, SchemaType.Mapped, "ArcImpiegati")
Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(OleDbDataAdapter1)
row = DataSet11.ArcImpiegati.NewRow
row.Item("IDimpiegato") = "23"
row.Item("impiegato") = "luigi"
DataSet11.ArcImpiegati.Rows.Add(row)
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 11:08   #10
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Mmm mi sa che c'e' un pò di confusione.
Da quanto posso capire hai usato mezzi controlli data trascinati sulla form e mezzo via codice,questo perche' una cosa cosi " DataSet11.ArcImpiegati" non potrebbe mai funzionarti con gli esempi che ti ho fatto io.


Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(OleDbDataAdapter1)

questo poi non serve a nulla se non ci aggiungi le istruzioni che ti ho postato sopra.
Segui passo passo il codice che ti ho allegato e leggi i commenti che ti ho lasciato per la spiegazione.

row = DataSet11.ArcImpiegati.NewRow
row.Item("IDimpiegato") = "23"
row.Item("impiegato") = "luigi"
DataSet11.ArcImpiegati.Rows.Add(row)

"ho fatto cosi e ci sono riuscito però nel mio database access non vedo la riga nuova che ho inserito... "

chiaro!Ado.Net lavora in modalità disconnessa..quindi in quel modo hai aggiunto una riga sulla table in memoria non sulla tabella sul db.
Il "trasferimento" di tutte le modifiche sul db avviene quando esegui
il dataadapter.update(<param>).

Cmq ti allego il codice per fare tutto questo,devi solo cambiare nome del db,query e la funzione di add con le tue colonne e i tuoi dati..
Allegati
File Type: zip dbaccess.zip (15.9 KB, 7 visite)
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 11:35   #11
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
dice che è una versione precedente a quella che ho io di vb.net e non me lo apre il file che mi hai postato..
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 11:42   #12
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Io ho la versione 2003,probabilmente hai la precedente.Crea un nuovo progetto vuoto e includi i Form1.vb e Form1.resx
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 11:54   #13
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
grazie mille...sei stato chiarissimo...io comunque ho trovato anche il modo diaggiungere modificare direttamente sul database con nnstruzione sql...solo che in questo caso lavoro sempre connesso giusto??se voglio lavorare disconnesso devo utilizzare il tuo metodo...


devo ancora capire l'utilità del commandbuilder...ho guardato anche nella guida ma non riesco a capire niente...
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 13:20   #14
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Si si può lavorare anche in maniera connessa,un esempio e' il datareader o eseguendo direttamente una query di modifica,ad esempio,"INSERT INTO..".Mi puoi postare il codice sul metodo che hai implementato?

CommandBuilder

Quando esegui la select per riempire la tabella il dataadapter,che e' il tuo ponte tra il dataset e la fonte dati,non conosce a priori i comandi sql per l'inserimento,l'update e la cancellazione rispetto alla tua fonte dati.
Infatti se tu dopo il fill,in runtime,vai a verificare il valore ad esempio del dataadapter.InsertCommand vedrai che e' nothing.
Questo significa che il dataadapter non sa come fare l'insert delle tue righe nel db.
Qui interviene il commandbuilder(con il codice che ho postato) che valorizza i tuoi command di modifica.Se infatti verifichi il valore
di dataadapter.InsertCommand dopo l'esecuzione delle 4 righe righe relative al command builder vedrai che non sarà più a nothing ma varra una cosa simile a

"INSERT INTO Anagrafica( IdArchivio , Codice , Nome , PersonaFisica , Cognome , Titolo , NascitaLoc , NascitaProv , NascitaNaz , NascitaData , PartitaIVA , CodFiscale , IdTipoAnagrafica , Note , NoteView ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? )"

che e' il tuo comando di Insert per la tua select.Più chiaro ora?
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 14:08   #15
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
esatto infatti io quel codice lì c'è l'ho già impostato quindi non dovrebbe servirmi....il metodo che ho impementato sono istruzioni sql dirette come hai detto tu, come INSERT TO ECC..

Volevo sapere le ultime 2 cose...io devo fare un inserimento in un campo di un determinato record con un parametro (che è il text di una textbox) volevo sapere dove e come devo inserire il parametro...io sono arrivato quì...


Dim cmInsPrestito As New OleDbCommand("INSERT INTO ArcImpiegati(Data, Impiegato, NumTelefono, Prestito, Utente) VALUES ("", "", "", 'si', "")", CnProva) dove Impiegato = textbox1.text in modo tale che lui mi inserisca "si" nel campo prestito solo dell'impiegato che c'è nella text...
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 14:18   #16
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Dim cmInsPrestito As New OleDbCommand("INSERT INTO ArcImpiegati(Data, Impiegato, NumTelefono, Prestito, Utente) VALUES ("", "", "", '" & textbox1.text & "', "") WHERE Impiegato=' & <nomeimpiegato> & "'"", CnProva)

Cmq se usi query dirette stai sbagliando metodo di lavoro e complicando decisamente la vita.
Dal codice da me postato ti bastava bindare una listbox per l'elenco impiegati e,ad esempio,una checkbox per il campo prestito e avevi già tutto sto lavoro fatto in automatico..
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 14:23   #17
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
Adesso provo anche con il tuo codice...Devo seguire sempre quello che mi hai postato vero??


poi io ho bisogno di fare delle select sul database per andare a vedere cosa valgono specifici campi relativi ad una record...

per esempio io voglio fare una select per vedere se in quel impiegato il campo prestito è vuoto o ha un valore, insomma voglio visualizzare il contenuto che c'è nel campo prestito...posso fare con un datareader??

come si faceva in vb6

recordset!nome campo = textbox.text mi sono spiegato??
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 14:55   #18
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
Dim cmInsPrestito As New OleDbCommand("INSERT INTO ArcImpiegati (Data, Impiegato, NumTelefono, Prestito, Utente) VALUES ("","", "", '" & txtTitolo.Text & "', "")WHERE Impiegato =' & txtTitolo.text & """, CnProva)
cmInsPrestito.ExecuteNonQuery()


non mi funziona
mangzeus è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 15:31   #19
Geen
Member
 
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
Quote:
Originariamente inviato da mangzeus
Adesso provo anche con il tuo codice...Devo seguire sempre quello che mi hai postato vero??


poi io ho bisogno di fare delle select sul database per andare a vedere cosa valgono specifici campi relativi ad una record...

per esempio io voglio fare una select per vedere se in quel impiegato il campo prestito è vuoto o ha un valore, insomma voglio visualizzare il contenuto che c'è nel campo prestito...posso fare con un datareader??

come si faceva in vb6

recordset!nome campo = textbox.text mi sono spiegato??
in generale

ds.tables("ArcImpiegati").Rows(indice).item(Prestito) = textbox.text

se ti tieni un oggetto CurRow di tipo Datarow che rappresenta la riga corrente nella tua datatable basta

CurRow.item(Prestito)= textbox.text

Se invece e' una riga generica puoi usare il metodo Select sulla datatable

Row=ds.tables("ArcImpiegati").Select(<criterio>)
Row.item(Prestito)= textbox.text

o,se hai la chiave primaria

Row=ds.tables("ArcImpiegati").Rows.Find(<ValoreChiavePrimaria>)
Row.item(Prestito)= textbox.text

ma questi metodi valgono per un approcio disconnesso mentre,a quanto sembra,hai implementato il tutto in altra maniera..

[/quote] non mi funziona[/quote]

dimmi almeno che errore ti da..

Ultima modifica di Geen : 08-04-2004 alle 15:33.
Geen è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2004, 08:04   #20
mangzeus
Senior Member
 
L'Avatar di mangzeus
 
Iscritto dal: Sep 2003
Messaggi: 1025
non mi da nessun errore in particolare...penso non gli piacciano degli argomenti sul WHERE perchè ho fatto la stessa cosa senza il parametro e funziona...

cosa intendi per (<criterio>) un'istruzione come "select acrImpiegati...ecc
mangzeus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
SpaceX guarda ai primi voli orbitali del...
Il prototipo del razzo spaziale riutiliz...
Blue Origin mostra uno spettacolare vide...
Roscosmos: la capsula Bion-M2 è r...
ASUS sperimenta GPU senza connettori di ...
La Cina conquisterà lo spazio ent...
Samsung ha un nuovo entry level: debutta...
Caos nei cieli europei: attacco informat...
Volkswagen ferma la produzione di ID.Buz...
Super sconti del weekend Amazon: 5 novit...
Dreame non si ferma più: tra le n...
Samsung Galaxy Buds3 FE a meno di 95€ su...
Praticamente regalate: 135€ per le Squie...
Si rinnovano i coupon nascosti di settem...
Amazon sconta i componenti: occasioni d'...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v