![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Como bien comenta rhino0nt en la bdd se define como TINYINT(1).
Después en el Delphi, usamos Zeos, y en la unit ZAbstractRODataset tengo una pequeña modificación en la siguiente función: Código:
procedure TZAbstractRODataset.InternalInitFieldDefs;
var
I, J, Size: Integer;
AutoInit: Boolean;
FieldType: TFieldType;
ResultSet: IZResultSet;
FieldName: string;
FName: string;
begin
FieldDefs.Clear;
ResultSet := Self.ResultSet;
AutoInit := ResultSet = nil;
try
{ Opens an internal result set if query is closed. }
if AutoInit then
begin
CheckSQLQuery;
CheckConnected;
ResultSet := CreateResultSet(FSQL.Statements[0].SQL, 0);
end;
if not Assigned(ResultSet) then
raise Exception.Create(SCanNotOpenResultSet);
{ Reads metadata from resultset. }
with ResultSet.GetMetadata do
begin
if GetColumnCount > 0 then for I := 1 to GetColumnCount do
begin
FieldType := ConvertDbcToDatasetType(GetColumnType(I));
if FieldType in [ftString, ftWidestring, ftBytes] then
Size := GetPrecision(I)
else Size := 0;
//TinyInt(1)= SmallInt = Boolean
if ( (FieldType=ftSmallInt)
or (FieldType=ftInteger)
or (FieldType=ftLargeint)
)
and (GetPrecision(I)=1)
then FieldType:=ftBoolean;
//TinyInt(1)= SmallInt = Boolean
J := 0;
FieldName := GetColumnLabel(I);
FName := FieldName;
while FieldDefs.IndexOf(FName) >= 0 do
begin
Inc(J);
FName := Format('%s_%d', [FieldName, J]);
end;
with TFieldDef.Create(FieldDefs, FName, FieldType,
Size, False, I) do
begin
{$IFNDEF FPC}
{$IFNDEF FOSNOMETA}
Required := IsWritable(I) and (IsNullable(I) = ntNoNulls);
{$ENDIF}
{$ENDIF}
{$IFNDEF FOSNOMETA}
if IsReadOnly(I) then Attributes := Attributes + [faReadonly];
Precision := GetPrecision(I);
{$ENDIF}
DisplayName := FName;
end;
end;
end;
finally
{ Closes localy opened resultset. }
if AutoInit then
begin
if ResultSet <> nil then
begin
ResultSet.Close;
ResultSet := nil;
end;
if Statement <> nil then
begin
Statement.Close;
Statement := nil;
end;
end;
end;
end;
Saludos!! |
|
#2
|
|||
|
|||
|
Muchas gracias a ambos, me sirve de gran utilidad. disculpen por mis agradecimientos tardíos pero no estaba en el trabajo. gracias. un saludo
|
|
#3
|
||||
|
||||
|
Algunas referencias al respecto>
http://dev.mysql.com/doc/refman/5.0/...an-values.html http://dev.mysql.com/doc/refman/5.0/...umn-types.html http://www.conclase.net/mysql/curso/...ap=005#005_BIT Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| convertir booleano a int o de int a booleano | jacobobo | Conexión con bases de datos | 3 | 05-12-2012 15:24:45 |
| Booleano con Interbase y Delphi 7 | Dado de baja | Conexión con bases de datos | 1 | 26-10-2008 20:38:03 |
| filtrar por campo booleano | ale_metall | Varios | 4 | 03-10-2008 22:52:28 |
| Ordenar un campo Booleano en MySQL | Brewster | MySQL | 3 | 24-01-2005 10:52:38 |
| ¿Tipo Booleano en SQL Server? | noegarcia | MS SQL Server | 1 | 22-04-2004 13:50:57 |
|