Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Compresion de campos

Hola a todos, tengo un problema que me lleva de cabeza toda la tarde (foro, google, ...). Pongo el codigo y luego explico :

Código Delphi [-]
function ConnectString(s : string) : string;
begin
     ConnectString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +   // creem una conection sring standard
          'Password="";User ID=Admin;Data Source=' + s + ';' +
          'Mode=Share Deny None;Extended Properties="";' +
          'Jet OLEDB: System database="";' +
          'Jet OLEDB: Registry Path="";' +
          'Jet OLEDB: Database Password="";' +
          'Jet OLEDB: Engine Type=5;' +
          'Jet OLEDB: Database Locking Mode=1;' +
          'Jet OLEDB: Global Partial Bulk Ops=2;' +
          'Jet OLEDB: Global Bulk Transactions=1;' +
          'Jet OLEDB: New Database Password="";' +
          'Jet OLEDB: Create System Database=False;' +
          'Jet OLEDB: Encrypt Database=False;' +
          'Jet OLEDB: Don''t Copy Locale on Compact=False;' +
          'Jet OLEDB: Compact Without Replica Repair=False;' +
          'Jet OLEDB: SFP=False;';
end;

Código Delphi [-]
function Crear_taula_agenda(s : string) : boolean;
var
        q : TAdoQuery;
        c : TAdoConnection;
        r : boolean;
begin
        c := TAdoConnection.Create(nil);

        c.Connected := false;
        c.LoginPrompt := false;
        c.ConnectionString := ConnectString(s);
        c.Connected := true;

        q := TAdoQuery.Create(nil);
        q.Connection := c;

        r := false;
        try
        q.Active := false;
        q.SQL.Text := 'create table agenda('+
                      'id integer primary key, '+
                      'prioritat integer, '+
                      'fet bit, '+
                      'data date, '+
                      'ref char(10) with compression, '+
                      'treballador char(20) with compression, '+
                      'descripcio char(100) with compression, '+
                      'fei_urgencia char(10) with compression, '+
                      'fei_ref char(10) with compression, '+
                      'fei_data_entrada date, '+
                      'fei_descripcio char(100) with compression'+
                      ')';
        q.ExecSQL;
        ....
Código Delphi [-]
function Crear_base_de_dades(n : string) : boolean;
var
        db : OleVariant;
        rs : boolean;
begin
        try
        db := CreateOleObject('dao.dbengine.36');
        db := db.CreateDatabase(n,';langid=0x040a;cp=1252;country=0;');
        rs := true;
        except
        rs := false;
        end;

        if not rs then
        try
        db := CreateOleObject('ADOX.Catalog');
        db.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + n+ ';');
        rs := true;
        except
        rs := false;
        end;

        if not rs then
        try
        db := CreateOleObject('Access.Application');
        db := db.NewCurrentDatabase(n);
        rs := true;
        except
        rs := false;
        end;

        Crear_base_de_dades := rs;
        db := unassigned;
end;

La cuestión es que mediante Crear_base_de_dades creo una base de datos de agenda, luego dentro de ella mediante la consulta sql creo las tablas. El problema viene que no me lo comprime en unicode, o algo parecido. Vamos, que si los campos char son de 10 y luego lleno tansolo 2 caracteres, me pone 8 espacios despues. Esto es, me hace algo asi:
si introduzco 'CAMPO' -> 'CAMPO '
por ejemplo.
Lo peor es que tampoco puedo eliminarlos por codigo: ni trim desde delphi, ni desde sql, por lo que deduzco que debe ser de alguna propiedad en el momento de crear la base de datos o la tabla . Es mas, si abro la base de datos con access, si bien me pone que tiene compresión unicode el campo de texto en concreto, los registros que ya tienen algun dato se mantienen con los espacios, aunque los cambie. No se si el 'permitir longitud cero' tiene algo que ver, no se establecerlo mediante sql.

Agradezco cualquier ayuda porque estas piedrecillas son muy, muy molestas

Lo dicho, saludos y gracias.
Responder Con Cita
  #2  
Antiguo 11-08-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
el problema esta en como creas los campos, el char llena todo con espacios aqui mejor utiliza el varchar ese si, si pones 2 solo te regresa 2
Responder Con Cita
  #3  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
ok lo pruebo, gracias por la respuesta
Responder Con Cita
  #4  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
si era eso muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
compresion de archivos PDF santiago14 Impresión 0 25-03-2007 22:52:55
Compresión de cadenas HombreSigma Varios 4 16-03-2005 03:38:07
Compresion de un jpg Raze Gráficos 4 21-02-2005 09:10:40
Compresion BMP Luciano Gráficos 2 16-11-2004 23:58:08
compresion y codificacion hugorubos Varios 1 14-06-2004 12:09:15


La franja horaria es GMT +2. Ahora son las 06:03:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi