Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: andaluz en 4 Mayo 2012, 22:59 pm



Título: consulta en .NET
Publicado por: andaluz 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:

Código
  1. Imports System.Data.OleDb
  2.  
  3. ' me he creado un objeto para establecer la conexión
  4. Public conexion_access As New OleDb.OleDbConnection
  5.  
  6. ' cadena de conexión
  7. 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")
  8.  

Ahora este es el código que me he creado con la consulta
Código
  1. Private Sub cbb_Marca_Prov_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbb_Marca_Prov.SelectedIndexChanged
  2.        Dim i, j As Integer
  3.        Dim marca_prov, id_prov_comp As String
  4.  
  5.        For i = 0 To ProveedoresTableAdapter.GetData.Rows.Count - 1
  6.            marca_prov = ProveedoresTableAdapter.GetData.Rows(i).Item(3)
  7.  
  8.            For j = 0 To CompraTableAdapter.GetData.Rows.Count - 1
  9.                id_prov_comp = CompraTableAdapter.GetData.Rows(j).Item(0)
  10.  
  11.                txt_Id_Proveedor_compra.Text = id_prov_comp
  12.                Exit For
  13.            Next
  14.  
  15.            Dim consulta As New OleDbCommand("SELECT Compra.Id_Proveedor FROM  Proveedores", conexion_access)
  16.  
  17.            conexion_access.Open()
  18.           [color=red] txt_Id_Proveedor_compra.Text = CType(consulta.ExecuteNonQuery(), String)[/color]
  19.        Next
  20.    End Sub
  21.  

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


Título: Re: consulta en .NET
Publicado por: $Edu$ en 5 Mayo 2012, 01:49 am
No veo ninguna linea de color rojo xD

Cambia esto: txt_Id_Proveedor_compra.Text = CType(consulta.ExecuteNonQuery(), String) por:

txt_Id_Proveedor_compra.Text = consulta.ExecuteNonQuery().ToString()

Que es lo mismo y talvez te anda


Título: Re: consulta en .NET
Publicado por: andaluz 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:

Código
  1. Dim consulta As New OleDbCommand("SELECT Id_Proveedor FROM  Proveedores WHERE Marca = " & cbb_Marca_Prov.Text, conexion_access)
  2.  

la he cambiado porque lo que quiero mostrar el el id_proveedor donde la marca sea igual a la elegida en el ComboBox.

Saludos


Título: Re: consulta en .NET
Publicado por: HdM en 5 Mayo 2012, 14:29 pm
Buenas.

@andaluz, efectivamente, la 1ª consulta estaba mal.

Código
  1. Dim consulta As New OleDbCommand("SELECT Compra.Id_Proveedor FROM  Proveedores", conexion_access)

Estás seleccionando un campo de la tabla "Compra", tomando como origen la tabla "Proveedores".

De todos modos, no deberías utilizar el método "ExecuteNonQuery", ya que no te devuelve ningún conjunto de datos, sólo el número de registros afectados (un valor numérico entero). Prueba con "ExecuteScalar" (1º mira para qué sirve este método y el que estabas utilizando).

Saludos.


Título: Re: consulta en .NET
Publicado por: andaluz 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.


Título: Re: consulta en .NET
Publicado por: andaluz en 7 Mayo 2012, 13:51 pm
Solucionado!!!!!