TTable, Acceso a tablas mediante Borland C++

En los siguientes ejemplos asumiremos que existe una base de datos de cualquier tipo (Informix, access, Oracle, etc) a la que un ODBC apunta, también asumiremos que la utileria BDE de borland ya dio de alta dicho ODBC, y ya configuró un alias para esta base...Para nuestro ejemplo, este alias sería "acceso_base"...Tambien asumiremos que en esta base de datos existe una tabla llamada "tabla_ejemplo" que contiene los campos llamados "campo_entero" y "campo_cadena"

Regresar a página principal

                    #include vdbt/bdto.h  //encabezado de borland           
                   /****************************************************************************/ 
                   /* Esta función regresa 0 si existe registro, 1 si se agrega, 2 si se borra */
                   /****************************************************************************/ 
                   int acceso_tabla() 
                   {   
                    char dato[8];
                    int dato2; 
                    /**************************************************/
  		      /*en un caso real "dato" se llenaría dinamicamente*/
                    /**************************************************/
                    strcpy(dato,"buscaalgo");
                    TTable tabla;
                    tabla = new TTable(); 
                    /***********************************************************************************************/
                    /* con respecto a la línea siguiente ver Conexion a bases de datos */
                    /***********************************************************************************************/
                    tabla->DatabaseName=string("acceso_base"); 
                    tabla->TableName=string("tabla_ejemplo");   
                    /**********************************************************************************/ 
                    /*no es necesario que exista un indice real en la tabla para que podamos definirlo*/
                    /**********************************************************************************/
                   tabla->IndexFieldNames = string("campo_cadena"); 
                    if(!tabla->Active)
                        tabla->Open();         /* abrimos la tabla*/
                    tabla->SetKey();           /* ponemos la tabla en modo de busqueda */
                    /* dato a buscar*/
                    tabla->FieldByName(string("campo_cadena"))->AsString = string(dato);  
                    /* iniciar busqueda */
                    if(!tabla->GotoKey())                              
                       {
                         MessageBox("No se encontro el registro... se agregara", "Base de Datos", MB_OK);
                         tabla->Insert();        /*agregar registro */
                         tabla->FieldByName(string("campo_cadena"))->AsString = string("nuevo_registro");  
                         tabla->FieldByName(string("campo_entero"))->AsInteger= 13; /*por decir algo*/
                         tabla->Post()               /* actualizamos base */
                         tabla->Close();             /* cerramos tabla */
                         delete tabla;
                         return 1;
                      }
                    else
                      {
                         if(tabla->FieldByName(string("campo_entero"))->AsInteger == 5) /*por decir algo*/
                            {
                              tabla->Delete();  /* borra registro actual */
                              tabla->Close();
                              delete tabla;
                              return 2;   
                           }                         
                      }
                    tabla->Close();
                    delete tabla;
                    return 0;  
                   }
1