Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    VBnet non salva i dati nel database

    salve.sto facendo un programma che a un certo punto dovrebbe salvare in un database dei dati da un form. il problema è ke quando salvo, se visualizzo il database dal mio programma appare tutto ok(cioè modifiche salvate) mentre se vedo da access non è cosi, idem alla riapertura del programma. grazie in anticipo. stefano
    ecco il codice dell'inserimento nuovo record:


    Dim ConnString As String = "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source =" & "tracciabilita.mdb"
    Dim Cn As New OleDbConnection(ConnString) 'stringa di connessione al database
    'apertura connessione
    Cn.Open()

    Dim cmd As New System.Data.OleDb.OleDbCommand
    cmd.CommandType = System.Data.CommandType.Text
    'istruzione di inserimento in sql
    cmd.CommandText = "INSERT INTO tracciabilitatab (descrizione,codice,lotto,datas,datac,bollinoit,bo llinoce) VALUES ('" + TxtDescrizione.Text + "','" + TxtCodice.Text + "','" + TxtLotto.Text + "','" + TxtDataS.Text + "','" + TxtDataC.Text + "','" + TxtIt.Text + "','" + TxtCe.Text + "')"
    cmd.Connection = Cn

    'eseguiamo l'istruzione di inserimento
    cmd.ExecuteNonQuery()

    'chiusura connessione
    Cn.Close()

    'messaggio di conferma dell'aggiunta record
    MsgBox("Aggiunto Correttamente")

  2. #2
    Sinceramente il tuo codice non l'ho mai usato, poi lo proverò e ti dirò meglio (ci sono dei comandi che non agiscono direttamente sul database, per questo alla chiusura del programma vengono persi).

    Ad ogni modo se vuoi andare sul sicuro io uso il seguente codice e va che è una meraviglia:

    codice:
    Dim connessione As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb")
    connessione.Open()
    Inserimento = "INSERT INTO...resto della query di inserimento"
            Dim QCommand As New OleDb.OleDbCommand(Inserimento, connessione)
            InsReader = QCommand.ExecuteScalar
    connessione.Close()
    Spero ti possa essere utile e scusami ancora se non sono riuscito ad essere più tecnico sul perchè il tuo codice non fa esattamente quello che vorresti.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  3. #3
    ciao. grazie per l'aiuto ma lo stesso non va bene...da come ho capito è come se nel datagrid salvasse e nel database reale no, perche la tua istruzione produce effetti identici alla mia... è come se non fosse stato impostato qualche collegamento, pero se ad es effettuo una ricerca effettivamente i dati li ottengo(cioè quelli gia inseriti nel database attraverso access e quelli eventualmente inseriti dallo stesso mio programma all'interno di un unica sessione dello stesso, perche al riavvio del progr.scompaiono le aggiunte e le modifiche e compaiono solo i dati inseriti da access)
    non è che hai altre soluzioni?

  4. #4
    Originariamente inviato da sistemipos
    ciao. grazie per l'aiuto ma lo stesso non va bene...da come ho capito è come se nel datagrid salvasse e nel database reale no, perche la tua istruzione produce effetti identici alla mia... è come se non fosse stato impostato qualche collegamento, pero se ad es effettuo una ricerca effettivamente i dati li ottengo(cioè quelli gia inseriti nel database attraverso access e quelli eventualmente inseriti dallo stesso mio programma all'interno di un unica sessione dello stesso, perche al riavvio del progr.scompaiono le aggiunte e le modifiche e compaiono solo i dati inseriti da access)
    non è che hai altre soluzioni?
    Utilizzi un tableadapter? tipo per aggiungere il database hai cliccato dal menù dati "aggiungi nuova origine dati" o l'hai creato da codice? Se si hai fatto l'update del tableadapter?

    codice:
    Me.TuatabellaTableAdapter.Update(Me.Tuodataset.tuaazienda)
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5
    si effettivamente ho mancato questo comando...è che sto alle prime armi
    mica mi potresti dire anche dove va inserita questa riga? nel codice del datagrid?
    e poi non ho capito cosa intendi con tuaazienda. potresti spiegare meglio? grazie ancora

  6. #6
    Originariamente inviato da sistemipos
    si effettivamente ho mancato questo comando...è che sto alle prime armi
    mica mi potresti dire anche dove va inserita questa riga? nel codice del datagrid?
    e poi non ho capito cosa intendi con tuaazienda. potresti spiegare meglio? grazie ancora
    Ops si volevo dire tuatabella non tuaazienda, è che sto lavorando su una tabella che si chiama azienda e sto dando i numeri

    Comunque quella riga l'acquisisci con una variabile e poi ci lavori sopra con il comando mid che ti ho detto
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  7. #7
    neptune, grazie per il tempo che mi stai dedicando, ma nonostante tutti i tuoi consigli non funzione proprio l'inserimento...
    ora ti allego tutto il codice di un programma che inserisce in un DB chiamato prova con tabella chiamata provatab i dati di un form
    se ti è possibile scrivimi le eventuali modifiche che devo fare x farlo funzionare

    codice:
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    
    
    Public Class FrmInizio
        Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =prova.mdb"
    
        'ora dobbiamo dichiarare ancora un po’ di cose, la connessione, il contenitore per 
        'il record che andiamo di volta in volta a leggere, il comando che andremo 
        'ad eseguire e la stringa sql che costituisce il testo del comando (la SELECT
        ' vera e propria)
        Dim Cn As New OleDbConnection(ConnString)   'stringa di connessione al database
        Dim dr As OleDbDataReader   'legge nel database
        Dim cmd As OleDbCommand 'da comandi al database
        Dim sql As String   'memorizzo in questa variabile le istruzioni sql
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            
    
        End Sub
    
        Private Sub BttInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttInserisci.Click
            Dim sql As String
    
            'connetto il database
            Cn.Open()
            'creazione nuovo record
    
            'istruzione di inserimento in sql
            sql = "INSERT INTO provatab (descrizione,codice) VALUES ('" + TxtDescrizione.Text + "','" + TxtCodice.Text + "')"
            'cmd.Connection = Cn
            Dim cmd As New OleDb.OleDbCommand(sql, Cn)
            'eseguiamo l'istruzione di inserimento
            cmd.ExecuteNonQuery()
    
            Me.ProvaTabBindingSource.EndEdit()
            Me.ProvatabTableAdapter.Fill(Me.ProvaDataSet.provatab)
    
            'chiusura connessione
            Cn.Close()
            'messaggio di conferma dell'aggiunta record
            MsgBox("Aggiunto Correttamente")
        End Sub
    
    End Class
    a questo punto il database non risulta minimamente modificato

    grazie mille

    stefano

  8. #8
    Originariamente inviato da sistemipos
    neptune, grazie per il tempo che mi stai dedicando, ma nonostante tutti i tuoi consigli non funzione proprio l'inserimento...
    ora ti allego tutto il codice di un programma che inserisce in un DB chiamato prova con tabella chiamata provatab i dati di un form
    se ti è possibile scrivimi le eventuali modifiche che devo fare x farlo funzionare

    codice:
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    
    
    Public Class FrmInizio
        Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =prova.mdb"
    
        'ora dobbiamo dichiarare ancora un po’ di cose, la connessione, il contenitore per 
        'il record che andiamo di volta in volta a leggere, il comando che andremo 
        'ad eseguire e la stringa sql che costituisce il testo del comando (la SELECT
        ' vera e propria)
        Dim Cn As New OleDbConnection(ConnString)   'stringa di connessione al database
        Dim dr As OleDbDataReader   'legge nel database
        Dim cmd As OleDbCommand 'da comandi al database
        Dim sql As String   'memorizzo in questa variabile le istruzioni sql
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            
    
        End Sub
    
        Private Sub BttInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttInserisci.Click
            Dim sql As String
    
            'connetto il database
            Cn.Open()
            'creazione nuovo record
    
            'istruzione di inserimento in sql
            sql = "INSERT INTO provatab (descrizione,codice) VALUES ('" + TxtDescrizione.Text + "','" + TxtCodice.Text + "')"
            'cmd.Connection = Cn
            Dim cmd As New OleDb.OleDbCommand(sql, Cn)
            'eseguiamo l'istruzione di inserimento
            cmd.ExecuteNonQuery()
    
            Me.ProvaTabBindingSource.EndEdit()
            Me.ProvatabTableAdapter.Fill(Me.ProvaDataSet.provatab)
    
            'chiusura connessione
            Cn.Close()
            'messaggio di conferma dell'aggiunta record
            MsgBox("Aggiunto Correttamente")
        End Sub
    
    End Class
    a questo punto il database non risulta minimamente modificato

    grazie mille

    stefano
    Dimmi, ma il programma lo avvi dall'eseguibile oppure dall'ide di visual basic? perchè se lo avvii dall'ide non te li salverà mai i dati nel database

    Spero che tu avvii il programma da "..\Documenti\Visual Studio 2005\Projects\Tuoprogramma\Tuoprogramma\obj\Debug\ Tuoprogramma.exe"

    Se anche così non fosse prova a cambiare la stringa di connessione del database in

    codice:
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\prova.mdb"
    Ovviamente con questa stringa di connessione si presuppone che il database prova.mdb si trovi nella stessa directory dell'eseguibile.

    Così dovrebbe andare, ma se non va nemmeno così fammi sapere, anche se devo ammettere di essere a corto di idee alternative

    P.S: Ad ogni modo non ti preoccupare di chiedere, ovviamente se prima di farlo cerchi eventuali discussioni uguali tramite il motore di ricerca del forum, io per primo creo discussioni chilometriche su problemi "alla parvenza inrisolvibili", poi arriva il principe azzurro di turno (anche se avrei preferito una principessa ) e mi salva
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  9. #9
    oddiooooo...che vergogna....
    io eseguivo col visual basic stesso, non dal file......ahahhaha
    grazie mille per tutto!
    stefano

  10. #10
    Originariamente inviato da sistemipos
    oddiooooo...che vergogna....
    io eseguivo col visual basic stesso, non dal file......ahahhaha
    grazie mille per tutto!
    stefano
    No, anzi, scusami tu, se avessi avuto un pelino di tempo per provare il tuo codice mi sarei accorto subito che non dipendeva da esso, purtroppo sono impegnato fin sopra i capelli con un programma

    Ad ogni modo non ti preoccupare, ci passano tutti: Visual Basic lascia sempre intatto il database del progetto, e quasi tutti alle prime armi ci impazziscono, ci sono impazzito anch'io a mia volta.

    Sono felice comunque di esserti stato utile
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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 © 2025 vBulletin Solutions, Inc. All rights reserved.