Sto facendo un programma per Pocket PC 2003 utilizzando VB.NET 2005 ho qualche problema nel salvare dati su un DB.
Ho trovato un modo molto veloce per modificare/aggiungere dei dati di un datagrid
Ho creato un piccolissimo DB che si chiama NuovoDataset.xsd, in cui ho una tabella che si chiama RFID e due colonne chiamate:ID Scheda e Testo Scheda.
Tramite la procedura guidata ho aggiunto il mio db al progetto ed inserendo un datagrid nel form1 visualizzo le due colonne sopra citate.
Seguendo le istruzioni della guida in linea, ho selezionato il datagrid e cliccando sul triangolino in altro a destra, ho aperto una finestra di opzioni, dalla quale ho selezionato Genera Form dati.
Facendo ciò sono state create in automatico altre due form:
RFIDEditViewDialog.vb
RFIDSummaryViewDialog.vb
e nella form uno è stato aggiunto un pulsante nel mainmenù1 chiamato NEW.
Se mando in esecuzione il programma, nel datagrid della form1 visualizzo le colonne presenti, e cliccando sul tasto new si apre la form RFIDeditview in cui sono presenti due testbox con rispettivi label che indicano i campi da inserire, cioè il nuovo id scheda e il nuovo testo scheda. un volta inseriti i dati, chiudo la form e torno in quella principale, qui il datagrid è stato aggiornato con il nuovo record aggiunto. La stessa cosa capita se provo a visualizzare un campo esistente e modificarlo: funziona a perfezione!!
Se però chiudo l'applicazione e la rimando in esecuzione riecco il solito problema, i dati che avevo inserito/modificato non sono presenti.
Cercando sulla guida in linea e sfruttando qualche suggerimento, ho inserito allora altri due pulsanti nel mainmenù1, Salva e Esci. Ho inserito il codice che sembra giusto, ma i risultati non cambiano.
Questo è il codice del form1:
Imports System
Imports System.Data
Imports System.Windows.Forms
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If NuovoDataSetUtil.DesignerUtil.IsRunTime Then
'TODO: eliminare questa riga di codice per rimuovere la proprietà AutoFill predefinita per 'NuovoDataSet.RFID'.
Me.RFIDTableAdapter.Fill(Me.NuovoDataSet.RFID)
End If
End Sub
Private Sub NewMenuItemMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewMenuItemMenuItem.Click
RFIDBindingSource.AddNew()
Dim rfidEditViewDialog As scrivi_su_db.RFIDEditViewDialog = scrivi_su_db.RFIDEditViewDialog.Instance(Me.RFIDBindingSource)
rfidEditViewDialog.ShowDialog()
End Sub
Private Sub RFIDDataGrid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RFIDDataGrid.Click
Dim rfidSummaryViewDialog As scrivi_su_db.RFIDSummaryViewDialog = scrivi_su_db.RFIDSummaryViewDialog.Instance(Me.RFIDBindingSource)
rfidSummaryViewDialog.ShowDialog()
End Sub
Private Sub Salva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Salva.Click
Me.RFIDBindingSource.EndEdit()
Me.RFIDTableAdapter.Update(Me.NuovoDataSet.RFID)
NuovoDataSet.AcceptChanges()
End Sub
Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
Close()
End Sub
End Class
Questo il codice della form RFIDEditViewDialog.vb
Public Class RFIDEditViewDialog
Private Sub RFIDEditViewDialog_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Me.RFIDBindingSource.EndEdit()
End Sub
End Class
Questo il codice della form RFIDSummaryViewDialog.vb
Public Class RFIDSummaryViewDialog
Private Sub EditMenuItemMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditMenuItemMenuItem.Click
Dim rfidEditViewDialog As scrivi_su_db.RFIDEditViewDialog = scrivi_su_db.RFIDEditViewDialog.Instance(Me.RFIDBindingSource)
rfidEditViewDialog.ShowDialog()
Me.Close()
End Sub
Private Sub RFIDSummaryViewDialog_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = System.Windows.Forms.Keys.Up) Then
Me.AutoScrollPosition = New System.Drawing.Point(0, ((0 - Me.AutoScrollPosition.Y) _
- 16))
e.Handled = True
End If
If (e.KeyCode = System.Windows.Forms.Keys.Down) Then
Me.AutoScrollPosition = New System.Drawing.Point(0, ((0 - Me.AutoScrollPosition.Y) _
+ 16))
e.Handled = True
End If
If (e.KeyCode = System.Windows.Forms.Keys.Up) Then
'Su
'Su
End If
If (e.KeyCode = System.Windows.Forms.Keys.Down) Then
'Giù
'Giù
End If
If (e.KeyCode = System.Windows.Forms.Keys.Left) Then
'Sinistra
End If
If (e.KeyCode = System.Windows.Forms.Keys.Right) Then
'Destra
End If
If (e.KeyCode = System.Windows.Forms.Keys.Enter) Then
'Invio
End If
End Sub
End Class
Qualcuno di voi sa dirmi perchè i dati che immetto non rimangono scritti del DB??
Oppure c'è qualcosa che devo settare per far si che i dati vengano inseriti??
Devo magari impostare qualcosa sul dataset?
Se qualcuno può aiutarmi gli sarò riconoscente... l'importante è che mi spieghi il tutto come se stesse spiegando qualcosa ad un demente (cosi mi sento in questa situazione)
Aspetto con ansia qualche vostra risposta