Newsgroup: it.comp.lang.visual-basic
Titolo: aggiornamento dati db in VB.net: metodo di collegamento?

Salve, vi posto subito il mio quesito: ho una form che collego ad un
db ed a diverse tabelle access senza utilizzare automazioni. In
pratica faccio, riepilogando:
        strconn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
Application.StartupPath & "\progetto.mdb"
            sql = "INSERT INTO anagrafica  (" & campi & ") VALUES (" &
valori & ")"
            Dim cmd As New OleDbCommand(sql, cn)
            cmd.ExecuteNonQuery()
Nelle var campi e valori inserisco precedentemente tutti i nomi dei
campi e tutti i valori corrispondenti delle textbox.
Adesso dovrei gestire l'aggiornamento dei dati, e questa è la mia
domanda: invece che inserire dentro la query di update i campi uno ad
uno con i relativi valori delle textbox, ci sono dei metodi specifici
che si utilizzano di solito in questa situazione, delle routine
automatizzate che non necessitano di scrivere tutti i nomi delle
textbox?
Non ho utilizzato procedure di databinding automatizzate all'inizio
perchè così riesco ad avere più controllo dell'applicazione, ma adesso
mi è sorto un dubbio: se uno ha trecento campi e vuole gestire il
databinding da codice non credo che si metterà ad elencare i campi uno
ad uno!
Oh no?!!?
Grazie e scusate per l'ignoranza in merito.

Ora non ho 
VS.NET
 a disposizione.
Prova a vedere il CommandBuilder
Dovrebbe fare al caso tuo.
bye

On 26 Giu, 12:02, "Telema srl (Nicola Ottomano)"

Grazie per il suggerimento!
Adesso mi documento un pò perchè non l'ho mai usato, e poi vedo se può
fare al caso mio.
Una piccola info: come si fa in sql ad elencare tutte le colonne che
fanno parte di una tabella? Preciso, non i valori, ma proprio il nome
delle colonne!
Grazie ancora.

 delle colonne!
Questo è proprio alla base dell'SQL:
SELECT * FROM tabella
Ciao

 Ciao
No, ripeto: il nome delle colonne, non il valore!
Es.
table: id, nome, cognome
query: select...
risultato: id, nome, cognome
Mi servono i nomi delle colonne delle tabelle perchè devo fare delle
operazioni e volevo ciclarle invece che riscriverle una ad una (ne
sono un pò tante!)

 ha scritto nel messaggio 
news:1182874476....@u2g2000hsc.googlegroups.com...



Io faccio cosi:
        Dim Cnn As New System.Data.OleDb.OleDbConnection(CnnDb)
        Cnn.Open()
        Dim Cmd As New System.Data.OleDb.OleDbCommand(IstrSql, Cnn)
        Dim Dr As System.Data.OleDb.OleDbDataReader = Cmd.ExecuteReader
        Dim Ind as Long = 0
        Do While DR.Read()
                For Ind = 0 To DR.FieldCount - 1
                    NomeCampo = DR.GetName(Ind)
                    .
                    .
                    .
                Next
        Loop
Spero ti possa servire. E' molto comodo quando devo popolare una griglia.
PS. L'ordine dei campi e' dato dalla istruzione sql. Quindi se vuoi un 
determinato ordine devi fare cosi:
SELECT  DESCRIZIONE, CODICE,  PREZZO, QUANTITA FROM TABELLA
L'ordine sara'    DESCRIZIONE, CODICE, PREZZO E QUANTITA
Ciao

 sono un pò tante!)
Ah, ho capito.
Usa DataAdapter.FillSchema()
Ciao 

 ...
Ti ringrazio per il codice postato, sicuramente mi sarà utile in
futuro per diverse applicazioni.
Grazie ancora.

 Usa DataAdapter.FillSchema()
Ti ringrazio per l'aiuto, anche se io sto usando un OleDbDataReader,
però ho capito il concetto.
Ma non si  può ottenere il nome delle colonne anche solo con una
semplice query sql?!?!
Mi ricordo che in postgres c'è qualcosa del tipo select column, ma in
access?
Grazie intanto.

 access?
Veramente è una semplice riga, crei un OleDbDataAdapter e chiami la sua 
FillSchema().
Se poi vuoi fare il lavoro tarocco e usare un datareader è un altro 
discorso.
Ciao 

 discorso.
Perchè lavoro tarocco? Cosa intendi? Il datareader non è indicato?
Spiegati meglio perchè io non sono pratico di questo linguaggio e ogni
consiglio lo accetto volentieri.
Grazie.

 consiglio lo accetto volentieri.
Solo perchè il datareader legge dati, non strutture.
Ciao