Ho un problema con la gestione di due tabelle in un unico database .sdf
Il problema che mi si presenta è quello di dovere gestire due tabelle nel mio pocket pc, il codice che stò usando è il seguente: premetto che se lo utilizzo con una sola tabella fila liscio cioè:
codice:
Private Sub BindText()
txtgiorno.DataBindings.Clear()
txtEntrata.DataBindings.Clear()
txtUscita.DataBindings.Clear()
TextBox3.DataBindings.Clear()
txtgiorno.DataBindings.Add("Text", dataSet.Tables(0), "Giorno")
txtEntrata.DataBindings.Add("Text", dataSet.Tables(0), "Entrata")
txtUscita.DataBindings.Add("Text", dataSet.Tables(0), "Uscita")
TextBox3.DataBindings.Add("Text", dataSet.Tables(0), "Totale")
End Sub
ma se utilizzo così questo mi và in errore con messaggio di There is a file sharing violation. A different process might be using the file. [,,,,,]
codice:
Private Sub BindText()
txtgiorno.DataBindings.Clear()
txtEntrata.DataBindings.Clear()
txtUscita.DataBindings.Clear()
TextBox3.DataBindings.Clear()
txtgiorno.DataBindings.Add("Text", dataSet.Tables(0), "Giorno")
txtEntrata.DataBindings.Add("Text", dataSet.Tables(0), "Entrata")
txtUscita.DataBindings.Add("Text", dataSet.Tables(0), "Uscita")
TextBox3.DataBindings.Add("Text", dataSet.Tables(0), "Totale")
'******************************
txtnumero.DataBindings.Clear()
txtEntrata.DataBindings.Clear()
CboAltro.DataBindings.Clear()
txtResiduo.DataBindings.Clear()
txtRimanenza.DataBindings.Clear()
txtnumero.DataBindings.Add("Text", dataSet.Tables(0), "Giorni")
txtData.DataBindings.Add("Text", dataSet.Tables(0), "Data")
CboAltro.DataBindings.Add("Text", dataSet.Tables(0), "Altro")
txtResiduo.DataBindings.Add("Text", dataSet.Tables(0), "Residuo")
txtRimanenza.DataBindings.Add("Text", dataSet.Tables(0), "Rimanenza")
End Sub
codice:
Imports System.Data.SqlServerCe
Public Class Form1
Inherits System.Windows.Forms.Form
Private dataAdapter As SqlCeDataAdapter
Private dataSet As DataSet
Private Const db = "\My Documents\ore.sdf"
Private Sub BindText()
txtgiorno.DataBindings.Clear()
txtEntrata.DataBindings.Clear()
txtUscita.DataBindings.Clear()
TextBox3.DataBindings.Clear()
txtgiorno.DataBindings.Add("Text", dataSet.Tables(0), "Giorno")
txtEntrata.DataBindings.Add("Text", dataSet.Tables(0), "Entrata")
txtUscita.DataBindings.Add("Text", dataSet.Tables(0), "Uscita")
TextBox3.DataBindings.Add("Text", dataSet.Tables(0), "Totale")
'******************************
txtnumero.DataBindings.Clear()
txtEntrata.DataBindings.Clear()
CboAltro.DataBindings.Clear()
txtResiduo.DataBindings.Clear()
txtRimanenza.DataBindings.Clear()
txtnumero.DataBindings.Add("Text", dataSet.Tables(0), "Giorni")
txtData.DataBindings.Add("Text", dataSet.Tables(0), "Data")
CboAltro.DataBindings.Add("Text", dataSet.Tables(0), "Altro")
txtResiduo.DataBindings.Add("Text", dataSet.Tables(0), "Residuo")
txtRimanenza.DataBindings.Add("Text", dataSet.Tables(0), "Rimanenza")
End Sub
Private Function ExecSql(ByVal sql As String) As Boolean
Dim cn As New SqlCeConnection("Data Source=" + db)
Dim cmd As New SqlCeCommand(sql, cn)
cmd.CommandType = CommandType.Text
Try
cn.Open()
cmd.ExecuteNonQuery()
cmd.Dispose()
cn.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtgiorno.Text = Format((Now), "dd/MM/yy")
txtData.Text = Format((Now), "dd/MM/yy")
If (System.IO.File.Exists(db)) Then
Dim cn As New SqlCeConnection("Data Source=" + db)
Dim commandBuilder As SqlCeCommandBuilder
dataAdapter = New SqlCeDataAdapter("Select * from ore order by Giorno asc", cn)
commandBuilder = New SqlCeCommandBuilder(dataAdapter)
dataSet = New DataSet
dataAdapter.Fill(dataSet)
Application.DoEvents()
DataGrid1.DataSource = dataSet.Tables(0)
ComboBox1.DataSource = dataSet.Tables(0)
ComboBox1.DisplayMember = "Giorno"
BindText()
Else
Dim create As String
Dim eng As SqlCeEngine
eng = New SqlCeEngine("Data Source=" + db)
eng.CreateDatabase()
create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Entrata nvarchar(20) not null,Uscita nvarchar(30) not null,Totale nvarchar(30) not null)"
ExecSql(create)
Me.Close()
End If
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
ExecSql("INSERT INTO ferie VALUES ('" & Me.txtData.Text & "','" & Me.txtnumero.Text & "','" & Me.CboAltro.Text & "','" & Me.txtResiduo.Text & "','" & Me.txtRimanenza.Text & "')")
RadioButton1.Checked = False
Dim cn As New SqlCeConnection("Data Source=" + db)
Dim commandBuilder As SqlCeCommandBuilder
dataAdapter = New SqlCeDataAdapter("Select * from ferie", cn)
commandBuilder = New SqlCeCommandBuilder(dataAdapter)
dataSet = New DataSet
dataAdapter.Fill(dataSet)
DataGrid3.DataSource = dataSet.Tables(0)
BindText()
End Sub
End Class