Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138

    [vb express 2008] usare un dataadapter per modificare un campo di un database access

    sto cercando tramite un dataadapter di popolare un dataset che in seguito verrà usato da un oledbcommand per modificare un preciso campo della stessa tabella di un db access.
    codice:
     Dim leggi_tabella As New OleDb.OleDbDataAdapter("SELECT Data_inizio FROM Offerte WHERE Codice_offerta = @valore1", archivio)
            leggi_tabella.SelectCommand.Parameters.Add("@valore1", OleDbType.Integer).Value = Codice_OffertaTextBox.Text
            Dim data As New DataSet
            leggi_tabella.Fill(data, "Offerte")
    
            Dim comando As New OleDb.OleDbCommand("UPDATE Offerte SET Data_inizio = @valore1 WHERE Codece_barra = @valore2", archivio)
            comando.Parameters.Add("@valore1", OleDbType.Date).Value = data
            comando.Parameters.Add("@valore2", OleDbType.Integer).Value = Codice_barraTextBox.Text
            archivio.Open()
            comando.ExecuteNonQuery()
            archivio.Close()
    mi evidenzia "comando.executeNonQuery" e mi dice: Impossibile convertire il valore del parametro da un DataSet a un DateTime. come faccio a convertire il dataset "data" ? o altrimenti esiste un altro modo per leggere un campo di un db access e poi usare questa lettura per modificarne un altro ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    ho usato anche un datareader come alternativaper leggere le righe della tabella ma non succede nulla.. cosa sbaglio ?
    codice:
      Dim comando As New OleDb.OleDbCommand("SELECT Data_inizio FROM Offerte WHERE Codice_offerta = @valore1", archivio)
            comando.Parameters.Add("@valore1", OleDbType.Char).Value = Codice_OffertaTextBox.Text
            Dim leggi As OleDb.OleDbDataReader = comando.ExecuteReader
            While leggi.Read()
                Dim comando2 As New OleDb.OleDbCommand("UPDATE Offerte SET Data_inizio = @valore1 WHERE Codece_barra = @valore2", archivio)
                comando.Parameters2.Add("@valore1", OleDbType.Date).Value = leggi.GetDateTime(0)
                comando.Parameters2.Add("@valore2", OleDbType.Integer).Value = Codice_barraTextBox.Text
               
            End While
            leggi.Close()
           
            archivio.Close()

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    L'errore che commetti è lapalissiano! Infatti prima dichiari un DataSet:
    codice:
    Dim data As New DataSet
    e poi tenti di utilizzarlo come parametro di tipo Date:

    codice:
    comando.Parameters.Add("@valore1", OleDbType.Date).Value = data

    Non capisco come tu non faccia a capire che non puoi, e non devi, convertire un dataset in una data. Non ha alcun senso.
    Che non sia il caso di studiare un po' meglio la teoria, prima di affrontare la pratica?

    Inoltre ti consiglio caldamente di denominare i tuoi oggetti utilizzando nomi 'logici'.
    Nominare data una variabile di tipo DataSet è tutto fuorchè logico.
    Vale anche per: leggi_tabella, archivio, ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    E allora come faccio a modificare il DB access tramite il data set?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    niente, ho risolto semplicemente facendo leggere il risultato di una query a un datareader grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.