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"
#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; }