Cómo utilizar caracteres comodín en la consulta SQL para realizar copias instantáneas de conjuntos de registros dinámicos & la

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): 110069
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
Puede crear un objeto Dynaset o Snapshot basándose en searchcharacters de campo de caracteres comodín en una consulta SQL. Los métodos find (FindFirst, FindLast, FindNext y FindPrevious) también pueden buscar un objeto Dynaset o Snapshot usingwildcard buscar caracteres en una consulta SQL.
Más información
Mediante la instrucción Like en el lenguaje de consultas SQL, puede búsquedaPor valores de campo de base de datos utilizando el asterisco (*) y signo de interrogación (?) caracteres como caracteres comodín. ¿El * y? caracteres comodín permite buscar un offield conjunto más amplio de valores inicial o final con cualquier raíz deseada. Por ejemplo, thefollowing sintaxis SQL seleccionan los registros de una tabla cuyos valores de campo de theAuthorfield empiecen por la b: letra
   Select * from XTable Where Authorfield Like 'b*'
Nota: busque el método, sólo se aplica a variables de objeto de tabla, consultas SQL cannotuse o comodines de búsqueda. El método Seek es buscar un registro mediante los operadores de comparación limitarse a ellos: >, > =, <=,> </=,> <, =,and=""> </,> <> </>.

Uso de caracteres comodín de asterisco (*)

En la sintaxis SQL para la instrucción Like, el asterisco (*) actúa como marcador de posición de awildcard para cualquier número de caracteres, desde cero hasta el campo Puertaenlace longitud. Una búsqueda de b * encuentra cualquier campo valor que empieza por b theletter. Una búsqueda de * b busca cualquier valor de campo terminan con b. Una búsqueda de * xxxx * encuentra cualquier valor de campo que contiene la subcadena de xxxx. Una búsqueda de * por sí mismo, coincide con todos los valores de campo.

Signo de interrogación (?) Uso de caracteres comodín

En la sintaxis SQL para la instrucción Like, el signo de interrogación (?) actúa como marcador de posición de awildcard para un solo carácter. Una búsqueda de?? b * encuentra el valor de anyfield que tiene b en el tercer carácter. Una consulta para * b?? busca el valor de anyfield con b como la tercera desde el último carácter.

Consideraciones sobre la velocidad

De las dos técnicas siguientes, 1 es más rápido que 2:

  1. Para tener mayor velocidad, invocar el SQL campo búsqueda con caracteres comodín sólo una vez para crear el objeto Dynaset o instantánea de los registros que coincidan con los criterios de búsqueda. A continuación, utilice los métodos de movimiento rápido (MoveFirst, MoveLast, MoveNext y MovePrevious) o haga clic en el control de datos para desplazarse rápidamente entre todos los registros que coincidan con los criterios de búsqueda especificados. Por ejemplo:
       Dim MyDS As Dynaset, MyDB As database, SQLx As String   SQLx = "Select * from Authors Where Author Like 'b*' "   Set MyDB = OpenDatabase("BIBLIO.MDB")   'Open a database.   Set MyDS = MyDB.CreateDynaset(SQLx)     'Create Dynaset using SQLx.   While Not MyDS.Eof      Print MyDS!author      MyDS.MoveNext   Wend
    La propiedad Eof es True después de MoveNext mueve más allá del último registro.

    Visual Basic crea un objeto Dynaset o Snapshot muy rápidamente al utilizar índices. Métodos de búsqueda subsiguientes son relativamente lento y secuencial, como se muestra en la técnica 2 a continuación.
  2. Una técnica más lenta es crear un objeto Dynaset formado por toda la tabla y luego utilizar múltiples métodos de búsqueda. Cada FindNext invocaría volver a la búsqueda de campo comodín SQL para buscar el siguiente registro coincidente. Esto agrega sobrecarga de tiempo de consulta. Después de encontrar un cierto número de registros, el tiempo total necesario sería más lento que con la técnica 1 descrito anteriormente.
       Dim MyDS As Dynaset, MyDB As Database, SQLx As String   SQLx = "author Like 'b*'"   Set MyDB = OpenDatabase("BIBLIO.MDB")     'Open a database.   Set MyDS = MyDB.CreateDynaset("Authors")  'Create Dynaset with table.   MyDS.FindFirst SQLx      'Find first record matching criteria.   Do Until MyDS.NoMatch      Print MyDS!author      MyDS.FindNext SQLx    'Find next record matching criteria.   Loop
    Puede invocar el método FindNext hasta Nomatch = True, como se muestra.

Ejemplo de cómo utilizar la búsqueda por carácter comodín SQL con un Control de datos

El cuadro Text1 en el programa siguiente muestra registros individuales del campo theAuthor de la BIBLIO. Base de datos de Microsoft Access. Al hacer clic en el Command1button, el sistema agrega automáticamente y prefijos el * wildcardsearch caracteres para cualquier cadena de búsqueda que especifique en el cuadro de texto Text2. Que amplía el conjunto de registros resultante que se muestra en Text1. Puede examinar actualmente que se muestra en Text1, haga clic en el control de datos.

  1. Iniciar Visual Basic o comenzar un nuevo proyecto. Se creará Form1 de forma predeterminada.
  2. Haga doble clic en el formulario. Agregue lo siguiente al código de evento Form Load:
       Sub Form_Load ()      text1.Text = "Enter ar* in Text2 and click Command1. Also try *z* "      text2.Text = "*"  'A lone asterisk finds all records.   End Sub
  3. Agregue un control de datos (Data1) a Form1.
  4. Agregue un cuadro de texto (Texto1) a Form1. Dar Texto1 las siguientes propiedades para enlazarlo al control de datos y el campo de autor en la tabla de base de datos:
       DataSource = Data1   DataField = Author
  5. Agregue un segundo cuadro de texto (Texto2) sin establecer todas las propiedades. Puede cambiar los criterios del comodín para las consultas de base de datos en Texto2 en tiempo de ejecución.
  6. Agregue un botón de comando (Command1) a Form1. Agregue el código siguiente al evento Click:
       Sub Command1_Click ()      Dim SQLX As String, SearchText As String      'Optional: In Text2, append & prefix the * wildcard to widen search:      If Right$(text2.Text, 1) <> "*" Then text2.Text = text2.Text & "*"      If Left$(text2.Text, 1) <> "*" Then text2.Text = "*" & text2.Text      'Remove the above 2 lines if you want the user to enter the asterisk      SearchText = text2.Text      ' The following SQL syntax selects all records from the Authors table      ' where the Author field matches the SearchText string, using any *      ' or ? wildcard characters. The result is ordered by the Au_id field:      SQLx = "Select * From Authors Where Author Like '" & SearchText      SQLx = SQLx & "' Order By Au_id"      Data1.DatabaseName = "biblio.mdb" ' Tells Data1 the database name.      Data1.RecordSource = SQLx ' Data1 control will use SQLx query string.      Data1.Refresh ' Update the data control with results of SQL query.   End Sub
  7. Inicie el programa presionando la tecla F5. Una vez un único asterisco (*) en el cuadro de texto2, haciendo clic en el botón Command1 busca todos los registros.

    Escriba ar en Texto2 y haga clic en Command1. El sistema cambia la consulta a * ar *. Que busca autor de todos los valores de los campos que contienen el ar de letras.

    Escriba z o * z * y haga clic en Command1 para buscar todos los valores de los campos que contienen la letra z en cualquier lugar del campo.

    Cierre el formulario para finalizar el programa.
Para cambiar la forma en que el programa agrega automáticamente el * comodín, se canmodify o quitar izquierda If... $ y si derecho... $ instrucciones.

La búsqueda método no admite búsquedas con caracteres comodín

El método Seek, que sólo funciona con las variables de objeto de tabla, es muy fastbut no admite búsquedas con caracteres comodín. Buscar es principalmente útil para buscar un solo registro que coincida con un criterio determinado. La búsqueda y mover métodos aremore práctico que el método Seek para buscar un grupo de registros.

La característica de método Seek más cercano a una búsqueda con caracteres comodín es operador de acomparison: >, > =,<=, or=""></=,><. for="" example,="" you="" could="" find="" the="" firstrecord="" that="" is="" greater="" than="" or="" equal="" to="" your="" search="" key="" value="" as=""></.>
   Dim MyDB As Database, MyTable As Table   Set MyDB = OpenDatabase("BIBLIO.MDB")      ' Open a database.   Set MyTable = MyDB.OpenTable("Publishers") ' Open a table.   MyTable.Index = "PrimaryKey"               ' Define current index.   MyTable.Seek ">=", 3         ' Seek a record with PrimaryKey >= 3.   If MyTable.NoMatch Then      MsgBox "match was not found"   Else      MsgBox "match was found"   End If
3,00 más rápido lento rápido rápido rápido

Advertencia: este artículo se tradujo automáticamente

Atribuudid

Artikli ID: 110069 – viimati läbi vaadatud: 03/20/2016 07:56:00 – redaktsioon: 2.0

  • kbmt KB110069 KbMtes
Tagasiside