Newsgroup: it.comp.lang.visual-basic
Titolo: Ado e vstudio .net

Ciao a tutti,
	è qualche giorno che litigo con vstudio .net, crystal reports
.net e ado.net...
quando pensavo di aver risolto tutto ho scoperto che prima di poter
aggiornare un record di mdb debo spiegare ad ado come si fa in sql...
non ci potevo credere... meno male che c'e' un'istruzione che sembra
farlo in automatico, ma sono sicuro che arriverà la volta che non
funziona...
	comunque la domanda è in 2 parti...
1) posso usare ADO classico 2.7 da 
vs.net
?
intendo i prodigiosi 
	.addnew
	.update
	& company
in subordine ... come?
2) esiste un modo + semplice di quello che elenco in seguito per
scrivere un record nuovo in un file access?
nome tabella: "1" , nomi campi "a" e "b"
per evitare problemi con l'editor ho messo due acapi tra linee di
codice diverse...
Grazie, Claudio
-------------------------------------------------------------------------------------------------
Dim dbname As String
dbname = Application.StartupPath & "\1.mdb"
Dim objConn As New
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
dbname)
objConn.Open()
Dim objAdapter As New OleDbDataAdapter("SELECT * FROM 1", objConn)
Dim objDataSet As New DataSet()
objAdapter.Fill(objDataSet)
Dim workRow As DataRow = objDataSet.Tables(0).NewRow()
workRow("a") = "ore"
workRow("b") = CStr(Now)
objDataSet.Tables(0).Rows.Add(workRow)
Dim myDataRowsCommandBuilder As OleDbCommandBuilder = New
OleDbCommandBuilder(objAdapter)
objAdapter.Update(objDataSet)
objConn.Close()


direi di si: componi un bel INSERT INTO NomeTabella (...) VALUES (...) in
una stringa e dalla in pasto al metodo ExecuteNonQuery() di una istanza
OleDbCommand.
.A
UGIdotNET - 
http://www.ugidotnet.org

Ve la butto li.
Può non essere il metodo migliore ma è un metodo:
Dim sqlDA As OleDb.OleDbDataAdapter
Dim resultDS As DataSet
Dim workRow As DataRow
Dim sqlCmdBldr As OleDb.OleDbCommandBuilder
Dim MyConnection As OleDb.OleDbConnection
Dim Sql As String
Try
    MyConnection = New OleDb.OleDbConnection(ServerConnString)
    MyConnection.Open()
    resultDS = New DataSet()
    sqlDA = New OleDb.OleDbDataAdapter()
    sqlCmdBldr = New OleDb.OleDbCommandBuilder(sqlDA)
    With sqlDA
        .SelectCommand = New OleDb.OleDbCommand()
        With .SelectCommand
            .CommandType = CommandType.Text
            .CommandText = "SELECT * FROM Modelli WHERE MOD_ID = " & ID
            .Connection = MyConnection
        End With
        .Fill(resultDS, "Modelli")
    End With
    If resultDS.Tables("Modelli").Rows.Count = 0 Then
        workRow = resultDS.Tables("Modelli").NewRow
    Else
        workRow = resultDS.Tables("Modelli").Rows(0)
    End If
    With workRow
        .Item("MOD_COL_ID") = Collezione
        'Qui ci metti tutti i valori da modificare
        .Item("MOD_TMD_ID") = 
cmbTipoModello.SelectedItem.id
    End With
    If ID = 0 Then
        resultDS.Tables("Modelli").Rows.Add(workRow)
    End If
    sqlDA.Update(resultDS, "Modelli")
    Return True
Catch e As Exception
    ErrParser.Trace(Err)
    Return False
Finally
    sqlDA = Nothing
    resultDS.Clear()
    resultDS = Nothing
    workRow = Nothing
    sqlCmdBldr = Nothing
    MyConnection.Close()
    MyConnection = Nothing
End Try

UGIdotNET - 
http://www.ugidotnet.org
Grazie molte per i consigli, 
Claudio


la studierò un po'...
grazie.
Cla

 objConn.Close()
Ma questo codice ti funziona ?
Io ho fatto una cosa molto simile, ma quando tento di fare "Update", mi dice
"OleDbCommand.Prepare method requires all parameters to have an explicitly
set type.".
Avete idea di quale sia il problema ?
Ciao
--
Luca Mauri
Fondatore di news://free.it.comp.database.mysql