Código
Private Sub btn_Insertar_Ventas_Clientes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Insertar_Ventas_Clientes.Click Dim id_marc, id_emp, id_cli As Integer ' compruebo que ninguno de los datos de venta a cliente esta vacio If cbb_Venta_Client_Insertar.Text = "" Or cbb_Nomb_Emp_Vent_Insertar.Text = "" Or cbb_Apel_Emp_Vent_Insertar.Text = "" Or cbb_Marca_Artic_Vent_Insertar.Text = "" Or cbb_Articulo_Artic_Vent_Insertar.Text = "" Or cbb_Nomb_Client_Vent_Insertar.Text = "" Or cbb_Apel_Client_Vent_Insertar.Text = "" Then MessageBox.Show("Alguno/s de los datos del articulo esta vacio, rellenelo", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If ' consulta para asignar el Id_Marca eligiendo el nombre del proveedor a la tabla modelos Dim dtadapterMarca As OleDbDataAdapter = New OleDbDataAdapter("SELECT Id_Marca FROM Marcas WHERE Marcas.Marca='" & cbb_Marca_Artic_Vent_Insertar.Text & "'", conexion_access) Dim dtsMarca As New DataSet dtadapterMarca.Fill(dtsMarca, "Marcas") For Each Fila As DataRow In dtsMarca.Tables("Marcas").Rows id_marc = Fila("Id_Marca") Next ' consulta para asignar el Id_empleado eligiendo el empleado 'Dim id_emp As Integer Dim dtadapterEmpleado As OleDbDataAdapter = New OleDbDataAdapter("SELECT Empleados.Id_Empleado FROM Empleados WHERE Empleados.Nombre='" & cbb_Nomb_Emp_Compra.Text & "' AND Empleados.Apellidos='" & cbb_Apel_Emp_Vent_Insertar.Text & "'", conexion_access) Dim dtsEmpleado As New DataSet dtadapterEmpleado.Fill(dtsEmpleado, "Empleados") For Each Fila As DataRow In dtsEmpleado.Tables("Empleados").Rows id_emp = Fila("Id_Empleado") Next ' consulta para asignar el Id_cliente eligiendo el nombre del cliente a la tabla ventas Dim dtadapterCliente As OleDbDataAdapter = New OleDbDataAdapter("SELECT Id_Cliente FROM Clientes WHERE Clientes.Nombre='" & cbb_Nomb_Client_Vent_Insertar.Text & "' AND Clientes.Apellidos='" & cbb_Apel_Client_Vent_Insertar.Text & "'", conexion_access) Dim dtsCliente As New DataSet dtadapterCliente.Fill(dtsCliente, "Clientes") For Each Fila As DataRow In dtsCliente.Tables("Clientes").Rows id_cli = Fila("Id_Cliente") Next ' inserto los datos en la tabla ventas Dim CadenaSql As String = "INSERT INTO Ventas (Fecha_Venta, Pagado, Id_Stock, Id_Empleado, Id_Cliente) VALUES ('" & CDate(cbb_Venta_Client_Insertar.Text) & "'," & chk_Pagado_Venta_Insertar.Checked & "," & "(SELECT TOP 1 Stock.Id_Stock FROM Stock WHERE Stock.Id_Articulo IN (SELECT Articulos.Id_Articulos FROM Articulos WHERE Articulos.Descripcion='" & cbb_Articulo_Artic_Vent_Insertar.Text & "' AND Stock.Vendido=False))," & "(SELECT Empleados.Id_Empleado FROM Empleados WHERE Empleados.Nombre='" & cbb_Nomb_Emp_Vent_Insertar.Text & "' AND Empleados.Apellidos='" & cbb_Apel_Emp_Vent_Insertar.Text & "')," & "(SELECT Clientes.Id_Cliente FROM Clientes WHERE Clientes.Nombre='" & cbb_Nomb_Client_Vent_Insertar.Text & "' AND Clientes.Apellidos='" & cbb_Apel_Client_Vent_Insertar.Text & "'))" MsgBox(IdStock) MsgBox(CadenaSql) Dim Comando As New OleDb.OleDbCommand(CadenaSql, conexion_access) Comando.Connection.Open() Comando.ExecuteNonQuery() If Mensaje = "" Then MessageBox.Show("La venta se ha insertado correctamente.", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("La venta se ha insertado correctamente. Debe dispensar al cliente el artículo con número de serie: " & Mensaje, "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information) End If ' ME GUSTARÍA SABER SI TENGO QUE REDIMENSIONAR LA MATRIZ ' redimensionamos el tamaño de la matriz 'ReDim Preserve S_Ventas(S_Ventas.Length) ' para refrescar la tabla me tengo que crear 2 variables Dim ta_venta As New ArcoclimaDataSetTableAdapters.VentasTableAdapter Dim tabla_venta As New ArcoclimaDataSet.VentasDataTable ' refrescamos los valores de la tabla tabla_venta = ta_venta.GetData ArticulosDataGridView.DataSource = tabla_venta Me.Validate() Me.VentasBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.ArcoclimaDataSet) Comando.Connection.Close() ' Limpio el contenido de los TextBox que he insertado en la tabla de empleados Limpiar_TextBox(cbb_Marca_Artic_Vent_Insertar.Text, cbb_Articulo_Artic_Vent_Insertar.Text, cbb_Nomb_Emp_Vent_Insertar.Text, cbb_Apel_Emp_Vent_Insertar.Text, cbb_Nomb_Client_Vent_Insertar.Text, cbb_Apel_Client_Vent_Insertar.Text) Exit Sub End Sub
El Id me lo devuelve correcto, pero no se si el error esta en la consulta o en el código, espero que me puedan ayudar,
Saludos