visual programar microsoft ejemplos codigos ms-access access-vba

ms-access - programar - vba access pdf



Verificación de integridad de cadena de datos basada en la fórmula de línea de base (1)

Will Jobs tiene un sentido perfecto sobre el rediseño de la estructura de su base de datos de la manera que él sugiere. Tal vez ese es el objetivo final de su proceso?

Para verificar la integridad de la cadena de descripción, pregúntese: ¿este proceso debe repetirse fácilmente de forma regular? En ese caso necesitarás un buen código.

Si solo se trata de un proceso único para limpiar los datos y, con suerte, seguir los consejos de la estructura de la base de datos de Will Jobs, solo utilizaré algunas consultas y filtros en la interfaz de usuario de Access.

Personalmente, me parece útil ver mi funcionamiento en una estructura de tabla y el acceso es excelente para esto.

Para seguir esta ruta, cree una consulta basada en su tabla Alpha usando algunas funciones de cadena en su cadena de Descripción.

decriptionStringIntegrity: iif(lcase(trim([Description])) Like "[a-z]* + #* bed + #* bath","good","bad") propertyType: Trim(Left([Description],InStr([Description]," + "))) bedroomCount: Trim(Left(Mid([Description],InStr([Description],"+")+2),InStr(Mid([Description],InStr([Description],"+")+2)," "))) bathroomCount: Trim(Replace(Mid([Description],InStr([Description],"bed + ")+5,30),"bath",""))

Están sucediendo muchas cosas allí, pero si se dividen en partes más pequeñas es bastante fácil de entender.

En la vista de consulta de Access puede filtrar esto aún más mostrando solo "decription" StringIntegrity o bedroomCount en blanco, etc. Esto no es muy robusto, pero al menos le mostrará la mayoría de las descripciones "incorrectas" como errores ortográficos y faltantes (el más + personaje).

Es posible que desee ejecutar una limpieza inicial de la cadena de descripción eliminando los espacios dobles y asegurándose de que cada "+" esté rodeado por un espacio.

Asegúrese de hacer todo esto en una copia de la base de datos, fácil de hacer con el acceso, simplemente copie el archivo, no hay excusa para no hacerlo.

Aquí hay una cadena de consulta que hace el trabajo en sus datos de ejemplo.

SELECT Alpha.Description, IIf(LCase(Trim([Description])) Like "[a-z]* + #* bed + #* bath","good","bad") AS decriptionStringIntegrity, Trim(Left([Description],InStr([Description]," + "))) AS propertyType, Trim(Left(Mid([Description],InStr([Description],"+")+2),InStr(Mid([Description],InStr([Description],"+")+2)," "))) AS bedroomCount, Trim(Replace(Mid([Description],InStr([Description],"bed + ")+5,30),"bath","")) AS bathroomCount FROM Alpha;

Espero que ayude

Necesito ayuda para iniciar una forma de verificar la integridad de cadenas que aparecen en un campo particular para TODOS los registros de una tabla:

Tabla Alpha:

| A-ID* | Description** | Formula** | |-------|------------------------------|--------------------------| | A101 | House + 2 bed + 1 bath | TYPH + numbdB + numbathA | | A212 | Apartment + 1 bed + 1 bath | TYPA + numbdA + numbathA | | A342 | Condominium + 4 bed + 3 bath | TYPC + numbdC + numbathZ |

*Clave primaria; longitud fija ** Longitud variable

Ahora los elementos que componen la "Descripción" (Tabla Alfa [arriba]) se encuentran en tablas separadas:

Tabla Bravo:

| Housing_ID* | HousingDes** | |-------------|--------------| | TYPH | House | | TYPA | Apartment | | TYPC | Condominium |

Tabla Charlie:

| Room_ID* | RoomDes** | |----------|-----------| | numbdA | 1 bed | | numbdB | 2 bed | | numbdC | 4 bed |

Tabla Delta:

| Bath_ID* | BathDes** | |----------|-----------| | numbathA | 1 bath | | numbathZ | 3 bath |

*Clave primaria; longitud fija ** Longitud variable

Ahora, necesito una forma de verificar que la "Descripción" de un registro (Tabla Alfa) es consistente con la "Fórmula" asociada (Tabla Alfa) como se especifica en las Tablas Bravo - Delta. Por ejemplo, con respecto al Registro 1 de la Tabla Alfa, la "Descripción" de un registro podría modificarse inadvertidamente. ¿Cómo podría "marcar" este registro incorrecto?

| A-ID* | Description** | Formula** | |-------|----------------------------|--------------------------| | A101 | House"ee" + 2 bed + 1 bath | TYPH + numbdB + numbathA |

¿Cómo recreo Table Alpha [llamemos a esta nueva tabla, Table FormAlphaBuild] basándonos en las "Fórmulas" solamente? Para cada "A-ID", podría comparar la "Descripción" encontrada en la Tabla Alfa con la "Descripción" que se encuentra en la Tabla FormAlphaBuild, y luego consultar esta discrepancia para saber qué registros necesitan ser corregidos.

Cualquier entrada sería apreciada. Mis pensamientos son los siguientes:

Private Sub VerifyDescription_Click () Dim dbHouse As Database Dim rsAlp, rsFAB As Recordset Dim Description, Formula, Housing_ID, Room_ID, Bath_ID As String Set dbhouse = CurrentDb Set rsFAB = dbs.OpenRecordSet ("Table_FormAlphaBuild") Set rsAlp = dbs.OpenRecordSet ("Table_Alpha") rsAlp.MoveLast rsAlp.MoveFirst Do Until rsAlp.EOF rsFAB.AddNew rsFAB![A-ID] = rsAlp![A-ID] rsFAB![Formula] = rsAlp![Formula] rsFAB.Update rsAlp.MoveNext Loop rsFAB.MoveLast rsFAB.MoveFirst Do Until rsFAB.EOF Housing_ID = Mid(rsFAB![Formula], 1, 4) Room_ID = Mid(rsFAB![Formula], 5, 6) Bath_ID = Mid(rsFAB![Formula], 9) Description = DLookup("HousingDes", "Table_Bravo") "+" DLookup("RoomDes", "Table_Charlie") "+" DLookup("BathDes", "Table_Delta") & Mid(Bath_ID, x, 8)

¿Cómo podría contabilizar una cantidad variable de bathroom_IDs? Siempre vendrían después de un Housing_ID + Room_ID.

Algunas ideas, por favor, cómo enumerar la descripción adecuada para CADA IDENTIFICACIÓN "A".

Necesito ayuda para crear la tabla FormAlphaBuild. Una vez que tengo esto, creo que puedo crear un mecanismo para comparar la "Descripción" de Alpha con la "Descripción" de FormAlphaBuild.