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 

Crear tabla Paradox con contraseña

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Crear tabla Paradox con contraseña Responder citando

Hola a todos,

Después de mirar y remirar no consigo encontrar la forma de crear una tabla paradox con contraseña, desde el DBD se le puede añadir una, pero necesito crearla desde código, he encontrado esto en Delphi, pero no me entero de nada, alguien sabría traducirlo a C++?

Os dejo el código por si alguien lo entiende.

Un abrazo.

Carlos

******************************************************

procedure AddMasterPassword(Table: TTable; pswd: string);
const
RESTRUCTURE_TRUE = WordBool(1);
var
TblDesc: CRTblDesc;
hDb: hDBIDb;

begin
if (Table.Active = False) or (Table.Exclusive = False) then
raise EDatabaseError.Create('La Tabla debe estas abierta en modo exclusivo.....');
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do
begin
StrPCopy(szTblName, Table.TableName);
StrCopy(szTblType, szPARADOX);
StrPCopy(szPassword, pswd);
bProtected := RESTRUCTURE_TRUE;
end;

Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
Table.Close;
{Asicionar el PW a la Tabla}
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, FALSE));
{Adicionar el PW a Session}
Session.AddPassword(pswd);
{ Abrir nuevamente la tabla}
Table.Open;
end;
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Viendo el código, lo unico que hace es crearle un Password a la Session de conexión de las tablas.
En Relativa, este procedimiento solo sirve para establecer password a las tablas que pertenecen a determianda Session, dentro del componente existe un evento OnPassword, que es el que se encarga de activar un cuadro de dialgo, para acceder a las tablas.

Para usar esta función, solo debes agregar algo como esto dentro de tu programa.

Código:
Session->AddPassword("ccsgClave12345@");


Esto agrega la contraseña ccsgClave12345@ a la session que tengas activa, cada vez que te conectes, va a pedirte que introduzcas esa contraseña, solo funciona para Sessiones de Paradox, o tablas de Dbase que requieran una contraseña.

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

Cesar,

Vaya, pensaba que asi podria añadir password a la tabla, no a la sesion, me interesa crear una tabla con un password, igual que hago en el dbd pero directamente desde codigo, se te ocurre como?

Un abrazo

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Carlos J. Fernandez escribió:
he encontrado esto en Delphi, pero no me entero de nada, alguien sabría traducirlo a C++?

Código:
void AddMasterPassword(TTable* Table, AnsiString pswd)
{
    if (!Table->Active || !Table->Exclusive)
        throw EDatabaseError("La Tabla debe estar abierta en modo exclusivo...");

    CRTblDesc TblDesc;
    ZeroMemory(&TblDesc, sizeof(CRTblDesc));
    strcpy(TblDesc.szTblName, Table->TableName.c_str());
    strcpy(TblDesc.szTblType, szPARADOX);
    strcpy(TblDesc.szPassword, pswd.c_str());
    TblDesc.bProtected = TRUE;  // RESTRUCTURE_TRUE

    hDBIDb hDb;
    Check(DbiGetObjFromObj(hDBIObj(Table->Handle), objDATABASE, hDBIObj(hDb)));
    Table->Close();
    // Asignar el PW a la Tabla
    Check(DbiDoRestructure(hDb, 1, &TblDesc, 0, 0, 0, FALSE));
    // Añadir el PW a Session
    Session->AddPassword(pswd);
    // Abrir nuevamente la tabla
    Table->Open();
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias Leo,

Voy a probarlo y te cuento.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Leo,

Funciona de maravilla, eres una maquina tío.

Muchísimas gracias por todo.

Carlos
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.