Cómo trabajar con el parámetro de la definición de consulta de Microsoft Access utilizando VB

Seleccione idioma Seleccione idioma
Id. de artículo: 181782
Expandir todo | Contraer todo

Resumen

En este artículo contiene ejemplos que muestran cómo llamar a un Microsoft Tener acceso a la definición de consulta con parámetros y devolver un objeto recordset de ADO mediante Visual Basic versión 6.0. Se dan ejemplos de texto y los parámetros de entrada numéricos.

Más información

Los ejemplos siguientes muestran formas de devolver un objeto recordset de ADO desde un Microsoft Access QueryDef, que espera un parámetro con el fin de devolver una conjunto de registros de una o varias filas. La aplicación de ejemplo contiene tres procedimientos que utilizan las definiciones de consulta de Access de Microsoft que utilizan parámetros.

El primer procedimiento muestra un ejemplo de pasar un parámetro numérico mientras el segundo procedimiento muestra un ejemplo de pasar un parámetro de texto. La en primer lugar los dos procedimientos muestra cómo crear una colección de parámetros de ADO y definir todas las propiedades de parámetro para que devuelve un recordset de ADO. La tercer procedimiento muestra cómo utilizar el método ADO Parameters.Refresh devolver las propiedades de un parámetro.

Nota: debe adquirir e instalar Microsoft Data Access Components (MDAC) para obtener el ejemplo en este artículo.

Si utiliza Access 2000 para probar, debe utilizar el 4.0 motor Jet suministrada con Microsoft Data Access componentes 2.1 y versiones posteriores. Puede descargar la versión más reciente en el siguiente sitio Web de Microsoft:
http://msdn2.Microsoft.com/en-us/Data/aa937695.aspx
El primer requisito es crear las definiciones de consulta de Microsoft Access. Esto artículo se supone que el lector está familiarizado con la creación de nuevas definiciones de consulta en Microsoft Access. El siguiente código de Visual Basic espera dos nuevas definiciones de consulta en el ejemplo de Neptuno incluido con Visual Basic. Crear las nuevas definiciones de consulta con las siguientes propiedades:

   Query Name    Table     Criteria      On Field      Datatype
   ------------------------------------------------------------

   ProductsByID  Products  [ProductID]   ProductID     Integer
   CustomerByID  Customers [CustomerID]  CustomerID    Text
				

Asegúrese de que también establece el nombre del parámetro y el tipo de datos en Microsoft Access mediante la selección de la consulta y, a continuación, elija los parámetros.

Después de crear la definición de Microsoft Access, abra un nuevo objeto Visual Básica del proyecto. De forma predeterminada, se crea Form1. En el menú proyecto, elija referencias, a continuación, seleccione Microsoft ActiveX Data Objects Library.

Siga estos pasos:

  1. Agregue tres botones de comando al formulario de nuevo con estas opciones:
          Button      Name           Caption
          ---------------------------------------------------------
    
          Command1    cmdNumeric     Numeric Parameter
    
          Command2    cmdText        Text Parameter
    
          Command3    cmdParameters  Determine Parameter Properties
    					

  2. Pegue el código siguiente en la sección de declaraciones generales de Form1:
       Dim Conn As New ADODB.Connection
          Dim Cmd As New ADODB.Command
          Dim Cmd1 As New ADODB.Command
          Dim Cmd2 As New ADODB.Command
          Dim Rs As New ADODB.Recordset
    
            Private Sub Form_Load()
              Dim strConn As String
    
              'Change the DSN to match your settings.
                strConn = "DSN=dsnAccess;"
                With Conn
                    .CursorLocation = adUseClient
                    .ConnectionString = strConn
                    .Open
                End With
    
            End Sub
    
            Private Sub cmdNumeric_Click()
             'Passes a Numeric parameter to a Microsoft  Access 97 QueryDef
             'that is based on the Products table. The parameter is on the
             'ProductID field.
    
             With Cmd
               Set .ActiveConnection = Conn
                .CommandText = "Productsbyid"
                .CommandType = adCmdStoredProc
    
                'ADO Numeric Datatypes are very particular
                .Parameters.Append .CreateParameter("paramProdID", _
                                                   adSmallInt, _
                                                   adParamInput, _
                                                   2) 'Works without a Size
             End With
    
             Cmd.Parameters("paramProdID") = 3
               'OR
             'Cmd.Parameters(0) = 3
             Rs.Open Cmd, , adOpenStatic, adLockReadOnly
    
             Debug.Print Rs(0), Rs(1), Rs(2)
             Rs.Close
          End Sub
    
          Private Sub cmdText_Click()
           'Passes a Text parameter to a Microsoft Access 97 QueryDef that
           'is based on the Customers table. The parameter is on the
           'CustomerID field.
    
             With Cmd1
               Set .ActiveConnection = Conn
               .CommandText = "Customerbyid"
               .CommandType = adCmdStoredProc
    
               'Can use either adVarChar or adChar dataType
               .Parameters.Append .CreateParameter("paramCustID", _
                                                    adVarChar, _
                                                    adParamInput, _
                                                    5) 'needs Size to work
             End With
    
             Cmd1.Parameters("paramCustID") = "COMMI"
             Rs.Open Cmd1, , adOpenStatic, adLockReadOnly
    
              Debug.Print Rs(0), Rs(1), Rs(2)
              Rs.Close
          End Sub
    
          Private Sub cmdParameters_Click()
           'The purpose of this procedure is to determine the
           'properties of a parameter.
           '
           With Cmd2
               Set .ActiveConnection = Conn
               .CommandText = "ProductsbyID"
               .CommandType = adCmdStoredProc
           End With
           Cmd2.Parameters.Refresh
    
           Debug.Print "The parameter properties for ProductsbyID are: " _
            & vbCrLf _
            & "Name: " & Cmd2.Parameters(0).Name & vbCrLf _
            & "Type: " & Cmd2.Parameters(0).Type & vbCrLf _
            & "Direction: " & Cmd2.Parameters(0).Direction & vbCrLf _
            & "Size: " & Cmd2.Parameters(0).Size
    
            Debug.Print "-------------"
    
           With Cmd2
               Set .ActiveConnection = Conn
               .CommandText = "CustomerbyID"
               .CommandType = adCmdStoredProc
           End With
           Cmd2.Parameters.Refresh
    
           Debug.Print "The parameter properties for CustomerbyID are: " _
            & vbCrLf _
            & "Name: " & Cmd2.Parameters(0).Name & vbCrLf _
            & "Type: " & Cmd2.Parameters(0).Type & vbCrLf _
            & "Direction: " & Cmd2.Parameters(0).Direction & vbCrLf _
            & "Size: " & Cmd2.Parameters(0).Size
    
          End Sub
    
    					
Ejecute el proyecto, teniendo en cuenta los resultados de cada botón, haga clic en.

Puede que haya observado que otra forma de obtener un conjunto de registros desde un Definición de consulta de Microsoft Access es utilizar el método Parameter.Refresh en su lugar que si define las propiedades del parámetro en una colección de parámetros. Esto en realidad funciona aunque extra viaje de ida y es necesario para el servidor. Sin embargo, cuando se pasa un parámetro de texto de un error produce debido a la correcta no se devuelve el tamaño de un parámetro de texto mediante la invocación de la Parameter.Refresh método. Una propiedad de tamaño es necesaria cuando se pasa un parámetro de texto. Esto propiedad puede establecerse antes de crear el objeto recordset de ADO para evitar el error.

Referencias

Para obtener información adicional acerca de MDAC, consulte el siguiente sitio Web de Microsoft:
Página Web de Microsoft Universal Data Access (MDAC)

Propiedades

Id. de artículo: 181782 - Última revisión: jueves, 30 de mayo de 2013 - Versión: 3.0
Palabras clave: 
kbhowto kbjet kbmt KB181782 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 181782
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com