|
71
|
Programación / Bases de Datos / consulta SQL
|
en: 25 Mayo 2012, 20:58 pm
|
Hola a todos, os comento lo que quiero realizar y a continuación os pongo la consulta que he realizado para ello: - quiero que en el combo1 tengo el nombre de los clientes y quiero conseguir es el Id_Venta. codigo que yo he realizado: "SELECT Ventas.Id_Ventas FROM Ventas WHERE Ventas.Id_Cliente IN (SELECT Clientes.Id_Cliente FROM Clientes WHERE Clientes.Nombre='" & cbb_Cod_Venta_Instalacion_ins.Text & "')"
El ultimo combo es el nombre del cliente Las tablas son las siguientes: Clientes Insatlaciones VentasId_Cliente Id_Instalacion Id_Ventas Nombre Descripcion Fecha_Venta Apellidos ...... .......... DNI Id_Venta Id_Stock ....... Id_Empleado Id_Empleado Id_Cliente
|
|
|
72
|
Programación / .NET (C#, VB.NET, ASP) / error al insertar en la base de datos
|
en: 25 Mayo 2012, 16:53 pm
|
Hola a todos, tengo un error al insertar en la base de datos, el cual me dice "Error no especificado" y la verdad es que no consigo encontrar el fallo, os pongo el código para ver si me pueden ayudar 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
|
|
|
76
|
Programación / .NET (C#, VB.NET, ASP) / error ExecuteNomQuery
|
en: 24 Mayo 2012, 19:30 pm
|
Hola a todos, tengo un error en este código que no consigo solucionar, el error esta en Comando.ExecuteNonQuery() me dice: No coinciden los tipos de datos en la expresión de criterios. Private Sub btn_Comprar_Articulo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Comprar_Articulo.Click ' compruebo que ninguno de los datos de reparacion esta vacio ' compra por articulo If grb_Datos_Articulo.Enabled = False Then If cbb_B_Arc_Marca_Compras.Text = "" Or cbb_B_Arc_Articulo_Compras.Text = "" Or cbb_Nomb_Emp_Compra.Text = "" Or cbb_Apel_Emp_Compra.Text = "" Or txt_Numero_de_Artículos_Compra.Text = "" Or txt_Num_Serie_Compra.Text = "" Then MessageBox.Show("Alguno/s de los campos esta vacio, rellenelo/s", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Else If grb_Buscar_Art_por_Marca.Enabled = False Then If cbb_Nombre_Empres_Compras.Text = "" Or cbb_Modelo_Compra.Text = "" Or cbb_Articulo_Compra.Text = "" Or cbb_Nomb_Emp_Compra.Text = "" Or cbb_Apel_Emp_Compra.Text = "" Or txt_Numero_de_Artículos_Compra.Text = "" Or txt_Num_Serie_Compra.Text = "" Then MessageBox.Show("Alguno/s de los campos esta vacio, rellenelo/s", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If End If End If ' consulta para asignar el Id_Articulo eligiendo la marca Dim id_artic As Integer Dim dtadapterArticulo1 As New OleDb.OleDbDataAdapter("SELECT Id_Articulos FROM Articulos WHERE Articulos.Descripcion='" & cbb_B_Arc_Articulo_Compras.Text & "' ORDER BY Articulos.Id_Articulos", conexion_access) Dim dtsArticulo As New DataSet dtadapterArticulo1.Fill(dtsArticulo, "Articulos") For Each Fila As DataRow In dtsArticulo.Tables("Articulos").Rows id_artic = Fila("Id_Articulos") 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_Compra.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 MsgBox("Ejecutando consulta") Dim CadenaSql As String = "INSERT INTO Stock (Num_Serie, Vendido, Fecha, Id_Articulo, Id_Empleado) VALUES ('" & txt_Num_Serie_Compra.Text & "', False, '" & cbb_Fecha_Compra.Text & "'," & id_artic & "," & id_emp & ")" Dim Comando As New OleDbCommand(CadenaSql, conexion_access) Comando.Connection.Open() Comando.ExecuteNonQuery() ' recimensionamos el tamaño de la matriz ReDim Preserve S_Stock(S_Stock.Length) ' para refrescar la tabla me tengo que crear 2 variables Dim ta_stock As New ArcoclimaDataSetTableAdapters.StockTableAdapter Dim tabla_stock As New ArcoclimaDataSet.StockDataTable ' refrescamos los valores de la tabla tabla_stock = ta_stock.GetData StockDataGridView.DataSource = tabla_stock Me.Validate() Me.StockBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.ArcoclimaDataSet) ' limpio el contenido de los TextBox que he insertado en la tabla Stock Limpiar_TextBox(cbb_Nombre_Empres_Compras.Text, cbb_Modelo_Compra.Text, cbb_Articulo_Compra.Text, cbb_B_Arc_Marca_Compras.Text, cbb_B_Arc_Articulo_Compras.Text, cbb_Nomb_Emp_Compra.Text, cbb_Apel_Emp_Compra.Text, txt_Numero_de_Artículos_Compra.Text, txt_Num_Serie_Compra.Text) Comando.Connection.Close() End Sub
Espero que me puedan ayudar Saludos
|
|
|
78
|
Programación / .NET (C#, VB.NET, ASP) / Re: consulta en .NET
|
en: 5 Mayo 2012, 17:17 pm
|
yo lo que quiero hacer el elegir un proveedor y que me ponga el id_proveedor que tiene asignado en la tabla, es algo sencillo en sql, pero al no haberlo implementado nunca en .NET no me termina de salir bien.
|
|
|
79
|
Programación / .NET (C#, VB.NET, ASP) / Re: consulta en .NET
|
en: 5 Mayo 2012, 13:23 pm
|
No sale bien, al cambiar el proveedor me deja el mismo Id_proveedor, he cambiado la consulta, porque creo que no estaba bien, esta es la consulta modificada: Dim consulta As New OleDbCommand("SELECT Id_Proveedor FROM Proveedores WHERE Marca = " & cbb_Marca_Prov.Text, conexion_access)
la he cambiado porque lo que quiero mostrar el el id_proveedor donde la marca sea igual a la elegida en el ComboBox. Saludos
|
|
|
80
|
Programación / .NET (C#, VB.NET, ASP) / consulta en .NET
|
en: 4 Mayo 2012, 22:59 pm
|
Hola a todos, estoy realizando una consulta en .NET de una base de datos de Access. El codigo que he generado es el siguiente: Imports System.Data.OleDb ' me he creado un objeto para establecer la conexión Public conexion_access As New OleDb.OleDbConnection ' cadena de conexión conexion_access = New OleDbConnection(" Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\carlos\Escritorio\Proyecto Ingegrado Carlos Barea Grado Superior\base de datos\Arcoclima.mdb")
Ahora este es el código que me he creado con la consulta Private Sub cbb_Marca_Prov_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbb_Marca_Prov.SelectedIndexChanged Dim i, j As Integer Dim marca_prov, id_prov_comp As String For i = 0 To ProveedoresTableAdapter.GetData.Rows.Count - 1 marca_prov = ProveedoresTableAdapter.GetData.Rows(i).Item(3) For j = 0 To CompraTableAdapter.GetData.Rows.Count - 1 id_prov_comp = CompraTableAdapter.GetData.Rows(j).Item(0) txt_Id_Proveedor_compra.Text = id_prov_comp Exit For Next Dim consulta As New OleDbCommand("SELECT Compra.Id_Proveedor FROM Proveedores", conexion_access) conexion_access.Open() [color=red] txt_Id_Proveedor_compra.Text = CType(consulta.ExecuteNonQuery(), String)[/color] Next End Sub
El error me lo da en la linea de color rojo y me dice lo siguiente: "No se han especificado valores para algunos de los parámetros requeridos." Espero que me puedan ayudar a solucionar el problema Saludos
|
|
|
|
|
|
|