Buenas tardes. Estoy de nuevo atascada sin por más vueltas que le doy ver donde tengo el fallo. Les comento a ver si me pueden echar una mano.
Simplemente estoy intentando acceder a una tabla de Access, uso VB 2005. Intento realizar un formulario en modo "AÑADIR", con varios textbox donde introducir los datos del nuevo registro. El caso es que me da error al actualizar y al añadir registros, mostrandome el error: Error en sintaxis en la instrucción INSERT INTO / UPDATE o bien me dice: "No se han especificado valores para algunos parámetros requeridos". El caso es que el único campo requerido es Expedición y siempre lo relleno.
Les muestro el código que tengo, a ver si pueden sacarme de esta locura:
[color=#0000ff size=2]
Imports[/color] System.Data
Imports System.Data.OleDb
Public Class TranszaurEntrada
Dim cn As New OleDbConnection
Dim daExp As OleDbDataAdapter
Dim daTarifa As OleDbDataAdapter
Dim daClientes As OleDbDataAdapter
Dim ds As New DataSet
Dim FilaActual As Integer
Dim estadoModificar As Actualizar
Private WithEvents bs As New BindingSource
Private Sub Entrada_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
bs.EndEdit()
If Not ds.GetChanges Is Nothing Then
If MessageBox.Show("Las últimas modificaciones no se han actualizado" & _
"¿Desea Salir?", Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
e.Cancel = True
End If
End If
End Sub
Private Sub Entrada_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ConectarADatos()
ActualizarFechaRegistro()
bs.AddNew()
EnlazarADatos()
FilaActual = bs.Position
estadoModificar = Actualizar.Añadir
bs.MoveLast()
bs.MoveFirst()
End Sub
Private Sub ConectarADatos()
cn.ConnectionString = Origen
daExp = New OleDbDataAdapter("Select * from ENTREGAS", cn)
cn.Open()
daExp.Fill(ds, "ENTREGAS")
cn.Close()
Dim clave(0) As DataColumn
clave(0) = New DataColumn
clave(0) = ds.Tables("ENTREGAS").Columns("EXPEDICION")
ds.Tables("ENTREGAS").PrimaryKey = clave
Dim cmdBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(daExp)
daExp.InsertCommand = cmdBuilder.GetInsertCommand
daExp.DeleteCommand = cmdBuilder.GetDeleteCommand
daExp.UpdateCommand = cmdBuilder.GetUpdateCommand
End Sub
Private Sub EnlazarADatos()
bs.DataSource = ds
bs.DataMember = "ENTREGAS"
Try
Me.txtFechaRegistro.DataBindings.Add(New Binding("TEXT", bs, "FECHA", True))
Me.txtExpedicion.DataBindings.Add(New Binding("Text", bs, "EXPEDICION", True))
Me.txtRemitente.DataBindings.Add(New Binding("Text", bs, "REMITENTE", True))
Me.txtDestinatario.DataBindings.Add(New Binding("Text", bs, "DESTINATARIO", True))
.............................................
Me.DataGridView1.DataSource = bs
Me.DataGridView1.DataMember = "ENTREGAS"
Catch ex As Exception
MessageBox.Show(ex.Message, Me.Text)
End Try
End Sub
Private Sub cmdGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGuardar.Click
bs.EndEdit()
If Not ds.GetChanges() Is Nothing Then
Try
daExp.Update(ds, "ENTREGAS")
Select Case estadoModificar
Case Actualizar.Añadir
Me.statusAviso.Text = "NUEVO REGISTRO Añadido Correctamente"
Case Else
Me.statusAviso.Text = "Datos Actualizados Correctamente"
End Select
ds.AcceptChanges()
Catch ex As Exception
MessageBox.Show(ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
ds.Tables("ENTREGAS").RejectChanges()
BorrarDatos()
ActualizarFechaRegistro()
End Try
End If
End Sub
Private Sub cmdRefrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRefrescar.Click
daExp.Update(ds, "ENTREGAS")
GRACIAS POR VUESTRA ATENCIÓN. UN SALUDO