[VB Express]: Salvare i dati in un DB SQL Server Locale

di Anonimizzato4038 il
32 risposte

32 Risposte - Pagina 2

  • Risolto il problema?

    Hai provato ad usare altri DBMS, tipo MySql o Access?
    Ci sarebbe anche Oracle (di cui esiste la versione express edition), ma forse è troppo esagerato per la tua problematica.
  • Purtroppo non ho risolto nulla. Ho provato ad usare sia access che SQL Server express ma il risultato non cambia. Appena ho un momento mi metto a cercare qualche guida.
  • Ciao e che nn hai sbagliato... credo.....
    ma x problema di virus ho perso il tuo progetto... scusami...
  • Dopo ti mando due progetti. Uno basato su Access e uno SQL Server Express.A priori il risultato non cambia, quindi c'è qualcosa da settare da qualche parte.
  • Ok
  • Hai provato a lanciare il programma dall'eseguibile che ti viene creato nelle sottocartelle debug e/o release (dipende dal tipo di compilazione che hai fatto) e successivamente nella sottocartella bin?
    Se così funge devi modificare qualche settaggio relativamente al database nell'ide
  • Se cosi ti funziona, controlla di non avere selezionato l'opzione "copia sempre il database" nell'ide
  • Dove vedo le impostazioni dell'IDE? Non so dove mettere le mani
  • Nel riquadro "Esplora soluzioni" ci dovrebbe essere una icona relativa al tuo database creato; ci clicchi sopra, a questo punto nel riquadro "Proprietà" appaiono appunto le sue proprietà, tra le quali (dovrebbe essere la prima) "Copia nella directory di output" e guardi come è settata, se è settata "Copia sempre" cambiala in "Non copiare"

    Oppure ricrei la connessione con il database e quando ti viene detto:
    "La connessione selezionata utilizza un file di dati locale che non si trova nel progetto corrente. Copiare il file nel progetto e modificare la connessione?"

    rispondi di no
  • Smanettone ti meriti un monumento in piazza! Adesso faccio la prova e vediamo cosa succede!
  • Posto le modifiche che ho apportato perchè non riesco ancora a salvare i dati nel DB


    Imports System.Data.OleDb
    Public Class frmPrimi
    ' Stringa di connessione
    Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""C:\ricette\DBRicette.mdb"""
    ' Oggetti per gestire i dati
    Dim da As New OleDbDataAdapter ' DataAdapter
    Dim ds As DataSet = New DataSet() ' DataSet
    Dim bs As New BindingSource() ' BindingSource
    Private Sub frmPrimi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: questa riga di codice carica i dati nella tabella 'DBRicetteDataSet.Primi'. È possibile spostarla o rimuoverla se necessario.
    Me.PrimiTableAdapter.Fill(Me.DBRicetteDataSet.Primi)
    ' Creazione connessione al DB
    Dim conn As OleDbConnection
    conn = New OleDbConnection(connStr)

    ' Pulizia DataSource
    ds.Clear()
    ' apre connessione
    conn.Open()

    ' Queri sul DB attraverso l'oggetto DataAdapter
    da.SelectCommand = New OleDb.OleDbCommand
    da.SelectCommand.Connection = conn
    da.SelectCommand.CommandText = _
    "SELECT * FROM Primi"
    da.SelectCommand.CommandType = CommandType.Text
    da.SelectCommand.ExecuteNonQuery()

    ' Viene riempito il DataSet con i dati nel DataAdapter
    da.Fill(ds, "Primi")

    ' Collegamento del Binding Source con il DataSet
    bs.DataSource = ds
    bs.DataMember = "Primi"

    ' Popolamento della DataGridView con i dati nel DataSet
    PrimiDataGridView.DataSource = bs

    ' chiude connessione
    conn.Close()
    End Sub

    Private Sub PrimiBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrimiBindingNavigatorSaveItem.Click
    Dim changes As DataSet = ds.GetChanges()
    Dim connection As OleDbConnection = New OleDbConnection(connStr)
    ' Creazione CommandBuilder
    Dim cmb As New OleDbCommandBuilder(da)
    ' Se articoliDataSet ha subito cambiamenti fa Update sul DB
    If Not changes Is Nothing Then
    Try
    connection.Open()
    da.Update(changes, "Primi")
    da.UpdateCommand = cmb.GetUpdateCommand
    da.AcceptChangesDuringUpdate = True
    connection.Close()
    MessageBox.Show("Database aggiornato con successo", "Ricettario PRO - Informazione", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Catch ex As Exception
    MessageBox.Show("Si è verificato un errore durante il salvataggio dei dati nel database!", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
    End If

    End Sub
    End Class
  • OOOOOOKKKKKKK!!! Con questo codice e l'indicazione specifica di non copiare il DB riesco a salvare correttamente!!!!!!

    Public Class Form1

    Private Sub DBRicetteBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DBRicetteBindingNavigatorSaveItem.Click
    Me.Validate()
    Me.DBRicetteBindingSource.EndEdit()
    Me.DBRicetteTableAdapter.Update(Me.DBRicetteDataSet.DBRicette)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: questa riga di codice carica i dati nella tabella 'DBRicetteDataSet.DBRicette'. È possibile spostarla o rimuoverla se necessario.
    Me.DBRicetteTableAdapter.Fill(Me.DBRicetteDataSet.DBRicette)

    End Sub
    End Class


  • alla prossima allora, ciao
  • Problema: ho scritto il codice in questa maniera per salvare i dati della tabella Dessert

    Me.Validate()
    Me.DessertBindingSource.EndEdit()

    Però non riesco a scrivere la riga per fare l'update perchè non mi compare nel completamento automatico. Dovrebbe essere così

    Me.DessertTableAdapter.Update(Me.DBRicetteDataSet.Dessert)

    VB Express mi dice però che Update non è un membro di RicettarioPRO.DBRicetteDataSetTableAdapters.DessertTableAdapter
    Cosa significa?
  • Premetto che in vb .net io non opero sui database in questo modo, ti posto un link che ti potrebbe essere utile:



    dall'errore che hai, mi viene da pensare che DessertTableAdapter non contenga il riferimento all'oggetto a cui si dovrebbe riferire (scusa il gioco di parole), condizione necessaria affinché si possano usare i suoi metodi; in particolare hai assegnato ad esso un valore restituito da una new? O comunque controlla che esso contenga effettivamente il puntatore all'oggetto della classe a cui appartiene
Devi accedere o registrarti per scrivere nel forum
32 risposte