Acceda a las tablas de VBA: actualice, cuente, elimine, cree, cambie el nombre, exporte

Este tutorial le enseñará cómo trabajar con Access Tables usando VBA.

Acceder a tablas de VBA

Para comenzar, demostraremos los comandos simples para trabajar con tablas en Access. Más adelante en este tutorial, le mostraremos funciones completas desarrolladas profesionalmente para trabajar con tablas en Access.

Crear mesa

Este código usará SQL para crear una tabla llamada "Tabla1" con los campos "ID" y "Nombre":

 Dim table_name As String Dim campos As String table_name = "Table1" fields = "([ID] varchar (150), [Name] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & fields

Cerrar tabla

Esta línea de código VBA cerrará una tabla (guardando cambios):

DoCmd.Close acTable, "Table1", acSaveYes

Para cerrar una tabla sin guardar:

DoCmd.Close acTable, "Table1", acSaveNo

Eliminar tabla

Este código eliminará una tabla (nota: primero se debe cerrar la tabla):

DoCmd.Close acTable, "Table1", acSaveYes DoCmd.DeleteObject acTable = acDefault, "Table1"

Cambiar el nombre de la tabla:

Esta línea de código cambiará el nombre de una tabla de acceso:

DoCmd.Rename "Table1", acTable, "Table1_New"

Otra opción es usar la propiedad TableDefs de un objeto de base de datos.

Establecer tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Mesa vacía / clara

Este código de VBA vaciará una tabla:

DoCmd.RunSQL "ELIMINAR * DE" & "Table1"

Truncar tabla / Eliminar registros

Esta línea de código VBA usa SQL para eliminar registros de una tabla que cumplen con ciertos criterios:

DoCmd.RunSQL ("ELIMINAR * DE" & "Tabla1" & "DONDE" & "num = 2")

Exportar tabla a Excel

Para exportar una tabla a Excel use el DoCmd.OutputTo método:

DoCmd.OutputTo acOutputTable, "Table1", acFormatXLS, "c: \ temp \ ExportedTable.xls"

o usa el DoCmd.TransferSpreadsheet método:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table1", "c: \ temp \ ExportedTable.xls", True

Actualizar tabla

El siguiente código actualizará un registro, sin mostrar el mensaje de advertencia:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Actualizar productosT SET ProductsT.ProductName = 'Producto AAA' WHERE (((ProductsT.ProductID) = 1))"

Acceder a las funciones de la tabla VBA

Los ejemplos de código anteriores son los comandos simples que puede usar para interactuar con Tablas usando VBA. Sin embargo, a menudo necesitará agregar mucho más código de soporte (incluido el manejo de errores) para utilizar correctamente estos comandos. A continuación, encontrará funciones de desarrollo profesional para trabajar con tablas en Access.

Registros de la tabla de recuento

Esta función contará el número de registros en una tabla:

Función pública Count_Table_Records (TableName As String) Como entero en caso de error Ir a Err: Dim r As DAO.Recordset Dim c As Integer Set r = CurrentDb.OpenRecordset ("Seleccionar recuento (*) como rcount de" & TableName) .OpenRecordset If (r .EOF) Entonces c = 0 Else c = Nz (r! RCount, 0) End If Count_Table_Records = c Exit Function Err: Call MsgBox ("Ocurrió un error:" & Err.Description, vbExclamation, "Error") End Function ' Ejemplo de uso Private Sub Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Compruebe si la tabla existe función

Esta función probará si existe una tabla, devolviendo VERDADERO o FALSO:

Función pública TableExists (ByVal strTableName As String) As Boolean 'Función: Determinar si la tabla existe en una base de datos de Access' Argumentos: strTablename: Nombre de la tabla para verificar Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Función de fin

A continuación, se muestra un ejemplo de la función en uso:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Then MsgBox ("¡Se encontró la tabla!") Else MsgBox ("¡La tabla NO se encontró!") End If End Sub

Crear función de tabla

Esta función creará una tabla en Access VBA en la base de datos actual:

Función pública CreateTable (table_fields As String, table_name As String) Como Boolean Dim strCreateTable Como String Dim intCount Como Integer Dim strFields () Como String Dim strValues ​​() Como String Dim strInsertSQL Como String Dim intCounter Como Integer Dim intData Como Integer On Error GoTo Err strFields = Split (table_fields, ",") strCreateTable = "CREATE TABLE" & table_name & "(" Para intCounter = 0 a UBound (strFields) - 1 strCreateTable = strCreateTable & "[" & strFields (intCounter) & "] varchar ( 150), "Next If Right (strCreateTable, 1) =", "Entonces strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 If Err.Number = 0 Then CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Esta función devolverá VERDADERO si la tabla se crea correctamente o FALSO si no se crea la tabla.

Puedes llamar a la función así:

Private Sub CreateTable_Example () Llamar a CreateTable ("f1, f2, f3, f4", "ttest") End Sub

Función Eliminar / Soltar tabla

Esta función eliminará una tabla si existe:

Función pública DeleteTableIfExists (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Entonces DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "deleted…" DoCmd.SetWarnings True End If End Función

Puedes llamar a la función así:

Private Sub DeleteTableIfExists_Example () Llamar a DeleteTableIfExists ("Table1") End Sub

Función de tabla vacía

Esta función vaciará una tabla si existe:

Función pública EmptyTable (TableName As String) If Not IsNull (DBookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Entonces DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "vaciado …" DoCmd.SetWarnings True End If End Función

Puedes llamar a la función así:

Private Sub EmptyTable_Example () Llamar a EmptyTable ("Table1") End Sub

Cambiar el nombre de la función de tabla

Esta función de VBA cambiará el nombre de una tabla:

Función pública RenameTable (ByVal strOldTableName como cadena, ByVal strNewTableName como cadena, strDBPath opcional como cadena) Como Boolean Dim db Como DAO.Database Dim tdf As TableDef 'Trampa para cualquier error. On Error Resume Next 'Si el nombre de la base de datos está vacío … Si Trim $ (strDBPath) = "" Entonces' … entonces establezca Db en el Db actual. Establecer db = CurrentDb () Else 'De lo contrario, establezca Db en la base de datos abierta especificada. Set db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Ver si ocurrió un error. If Err Then 'MsgBox "No se pudo encontrar la base de datos para abrir:" & strDBPath RenameTable = False Exit Function End If End If If ObjectExists ("Table", strOldTableName, strDBPath) Then Set tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Function 'Ejemplo de uso Private Sub RenameTable_Example () Llamar a RenameTable ("table1", "table2") End Sub

Puedes llamar a la función así:

Private Sub RenameTable_Example () Llamar a RenameTable ("table1", "table2") End Sub

Truncar / Eliminar registros de la tabla

Esta función eliminará registros de una tabla con manejo de errores:

Función pública Delete_From_Table (TableName como cadena, Criterios como cadena) En caso de error Ir a SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Criteria) DoCmd.SetWarnings True SubError: Función de salida SubErrorSalir: MsgBox " Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubSalir Finalizar función 'Ejemplo de uso Public Sub Delete_From_Table_Example () Llamar Delete_From_Table (" Table1 "," num = 2 ") End Sub

Exportar tabla a Excel

Esta línea de código exportará una tabla a Excel (una nueva hoja de cálculo):

DoCmd.OutputTo acOutputTable, "Table1", acFormatXLS, "c: \ temp \ ExportedTable.xls"

O puede utilizar esta función:

Función pública Export_Table_Excel (TableName como cadena, FilePath como cadena) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Example Sub Export_Table_Excel_Example () Export_Table_Excel ("Table1", "c: \ tempx \ Exported") End Sub

El código anterior se exportará a una nueva hoja de cálculo. En su lugar, puede agregar una tabla a una hoja de cálculo existente. Nuestro artículo sobre Importación / Exportación en Access VBA cubre esto con más detalle.

Agregar / adjuntar registros a una tabla

Esta función agregará / agregará un registro a una tabla:

Función pública Append_Record_To_Table (TableName como cadena, FieldName como cadena, FieldValue como cadena) En caso de error Ir a SubError Dim rs As DAO.Recordset Dim SQL As String Dim CurrentYear As Integer Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew rs (FieldName) .Value = FieldValue rs.Update rs.Close Set rs = Nothing Sub Exit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description Resume Sub Exit End Function 'Usage Example Private Sub Append_Record_To_Table_Example () Llamar Append_Record_To_Table ("Table1", "num", 3) End Sub

Agregar registro a la tabla desde el formulario

Esta función agregará un registro a una tabla desde un formulario:

Función pública Add_Record_To_Table_From_Form (TableName As String) En caso de error Ir a SubError Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew 'rs! [Field1] = Value1' rs! [Field2] = Value2 'rs! [ Field3] = Value3 rs.Update rs.Close Set rs = Nothing Sub Exit: Exit Function SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.Description End Function

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave