Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .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 (vbnet) [Seleccionar]

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
Código (vbnet) [Seleccionar]

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
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 (vbnet) [Seleccionar]

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
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 (vbnet) [Seleccionar]
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!!!!!