Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

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.
Resumen
En este artículo contiene ejemplos que muestran cómo llamar a un MicrosoftTener acceso a la definición de consulta con parámetros y devolver un objeto recordset de ADO mediante VisualBasic 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 unMicrosoft Access QueryDef, que espera un parámetro con el fin de devolver unaconjunto de registros de una o varias filas. La aplicación de ejemplo contiene tresprocedimientos 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 mientrasel segundo procedimiento muestra un ejemplo de pasar un parámetro de texto. Laen primer lugar los dos procedimientos muestra cómo crear una colección de parámetros de ADO ydefinir todas las propiedades de parámetro para que devuelve un recordset de ADO. Latercer procedimiento muestra cómo utilizar el método ADO Parameters.Refreshdevolver 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:El primer requisito es crear las definiciones de consulta de Microsoft Access. Estoartículo se supone que el lector está familiarizado con la creación de nuevas definiciones de consulta enMicrosoft Access. El siguiente código de Visual Basic espera dosnuevas 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 Accessmediante 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 VisualBá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 unDefinición de consulta de Microsoft Access es utilizar el método Parameter.Refresh en su lugarque si define las propiedades del parámetro en una colección de parámetros. Estoen 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 correctano se devuelve el tamaño de un parámetro de texto mediante la invocación de la Parameter.Refreshmétodo. Una propiedad de tamaño es necesaria cuando se pasa un parámetro de texto. Estopropiedad 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:
kbdse vbwin

Warning: This article has been translated automatically

Propiedades

Id. de artículo: 181782 - Última revisión: 05/30/2013 01:55:00 - Revisión: 3.0

  • kbhowto kbjet kbmt KB181782 KbMtes
Comentarios
t" src="https://c.microsoft.com/ms.js">