Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Tablas en tiempo de ejecucion?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Tablas en tiempo de ejecucion? Responder citando

Hola a todos, Alguien podria ayudarme con un problema que tengo, quiero crear tablas en tiempo de ejecucion y no puedo hacerlo, es decir quiero que mi programa(BD-local) chequee si existen las tablas si es asi que las use, si no estan que las cree, y aca esta mi problema no se como hacerlo desde la VCL, estube estudiando el codigo que esta en la pag. 270 del libro La Cara Oculta C++, y no me funciona, para tablas dBase, que es la tabla que estoy usando, probe con el codigo que esta en el libro "Borland C++ Builder 5 Developers Guide" Chapter 21, Working with tables 21-18, y tampoco, directamente no compila, y no es un error de version de compilador yo en este momento estoy usando C++ Builder 4.
Es mucho pedir un programa de ejemplo, pero me serviria de lujo si me aconsejan alguna guia o tutorial para esto.
Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

checa este ejemplo te sirve para crear tablas tipo paradox, las dbase, siguen el mismo estilo

Código:
//---------------------------------------------------------------------------
void __fastcall TForm1::BotonCrearClick(TObject *Sender)
{
        // Establecemos el alias, que determinará
        // la localización de la tabla en el disco
   TablaGrupos->DatabaseName = "MIBASE";
       // Facilitamos el nombre de la nueva tabla
        // y su tipo
    TablaGrupos->TableName = "GRUPOS.DB";
    TablaGrupos->TableType = ttParadox;

       // Usamos la propiedad FieldDefs para definir
        // las columnas que contendrá la tabla
        // Una columna con el identificador del grupo,
        // que será una cadena de 10 caracteres y
        // cuyo valor será requerido siempre
    TablaGrupos->FieldDefs->Add("ID_GRUPO", ftString, 10, true);
       // y un comentario adicional
    TablaGrupos->FieldDefs->Add("Comentario", ftString, 128, false);

   TIndexOptions Opciones;

   Opciones << ixPrimary << ixUnique;
       // Usamos la propiedad IndexDefs para definir
       // los índices que nos interesen. En este caso
        // un índice formado por la columna ID_GRUPO
    TablaGrupos->IndexDefs->Add("IndiceGrupo", "ID_GRUPO", Opciones);

             // Creamos la tabla
    TablaGrupos->CreateTable();
    TablaGrupos->Open(); // y la abrimos

      // Abrimos la tabla de artículos y nos ponemos
      // en la primera fila
    TablaArticulos->Open();
    TablaArticulos->First();

       // Mientras haya filas en la tabla
    while (! TablaArticulos->Eof) {
          // Añadimos una nueva fila a la tabla de grupos
       TablaGrupos->Append();

           // Establecemos el valor de la columna obligatoria,
            // que contendrá el identificador de grupo
        TablaGrupos->FieldByName("ID_GRUPO")->AsString =
              TablaArticulosGrupo->Value;

        try { // Intentamos añadir la nueva fila a la tabla
           TablaGrupos->Post();
        } catch(...) {
               // Si se genera una excepción, porque se
                // produzca una duplicación en el índice
           TablaGrupos->Cancel(); // cancelamos la operación
        }

           // Pasamos a la siguiente fila de la
            // tabla de artículos
        TablaArticulos->Next();
    }

          // Cerramos la tabla de artículos
    TablaArticulos->Close();

        // y activamos la propiedad Enabled del TDataSource
    DataSource1->Enabled = true;
}
//---------------------------------------------------


saludos
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Lun 23 May, 2005 6:52 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchisimas gracias César, ese codigo si que funciona.. Very Happy
César supón que quieres crear un index secundario como sería el codigo?, yo busque algo como "ixSecundary" pero esto aparentemente esto no existe, entonses se me ocurre que deveria ser de otra forma para los index secundarios...
Saludos Tor
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Es complicado lo que yo pregunto pasa que no tengo mucha idea Rolling Eyes , es muy poco mi experiencia en el mundillo de las BD, estube estudiano bastante teroria pero sobre esto la verdad que encontre muy poco (crear tablas usando la VCL).
Aguien podria orientarme? Sad
graciass..
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Un ejemplo para crear una tabla, dentro de builder, (sacado de la ayuda, del comando CreateTable) para VCL
Código:

The following example shows how to create a table.

Table1->Active = false; // The Table component must not be active

Table1->DatabaseName = "BCDEMOS";
Table1->TableType = ttParadox;

Table1->TableName = "CustInfo";

if (!Table1->Exists) // Don't overwrite an existing table

{

  // describe the fields in the table

  Table1->FieldDefs->Clear();
  TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();
  pNewDef->Name = "Field1";
  pNewDef->DataType = ftInteger;

  pNewDef->Required = true;

  pNewDef = Table1->FieldDefs->AddFieldDef();

  pNewDef->Name = "Field2";
  pNewDef->DataType = ftString;

  pNewDef->Size = 30;

  // Next, describe any indexes

  Table1->IndexDefs->Clear();
  /* the 1st index has no name because it is a Paradox primary key */
  Table1->IndexDefs->Add("","Field1", TIndexOptions() <<ixPrimary << ixUnique);

  Table1->IndexDefs->Add("Fld2Index","Field2", TIndexOptions() << ixCaseInsensitive);

  // Now that we have specified what we want, create the table

  Table1->CreateTable();
}

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola.

¿Y para crear tablas de Access?
Uso C++Builder 4.

Un saludo.
_________________
Nunca digas "Es imposible" sin intentarlo antes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

La misma filosofia, pero usando ADO u ODBC
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola.

¿Y con BDE?

Gracias.
_________________
Nunca digas "Es imposible" sin intentarlo antes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.