dicas show delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais
sombra
Artigos Show Delphi

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais
sombra
iniciantes show delphi

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais
sombra
downloads show delphi

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
sombra
voltar

PARA QUEM GOSTA DE DELPHI

Transformando qualquer Variant para string, para usar em SQL

Função para quem precisa converter quaisquer valores para serem aceitos em instruções Sql.
Ela pode ser totalmente configurada através dos parâmetros, de acordo com as exigências do seu
SGDB preferido.
Foi feita no Delphi XE7, mas pode ser facilmente adaptada para versões anteriores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
interface
 
uses
System.SysUtils,
System.StrUtils,
System.Variants;
 
function VarToSql(const pValue: Variant; pTrimToNull: Boolean = True; 
pDateTimeFormat: string = 'dd.mm.yyyy hh:nn:ss:zzz'; 
pQuoteDate: Boolean = True; pQuoteDateChar: Char = ''''; 
pNullString: string = 'NULL'): string;
 
 
implementation
 
function VarToSql(const pValue: Variant; pTrimToNull: Boolean; 
pDateTimeFormat: string; pQuoteDate: Boolean; pQuoteDateChar: Char; 
pNullString: string): string;
var
FDecimalSeparatorOld: Char;
FValue              : Variant;
begin
FValue := pValue;
if pNullString.Trim.IsEmpty then
pNullString := 'NULL';
case AnsiIndexText(VarTypeAsText(VarType(FValue)), ['FMTBcdVariantType']) of
0:
FValue := VarAsType(FValue, varDouble);
// poderão ser adicionados mais tipos específicos
end;
 
// varSingle, varDouble, varCurrency
if VarIsFloat(FValue) then
with FormatSettings do
begin
FDecimalSeparatorOld := DecimalSeparator;
DecimalSeparator := '.';
Result := FloatToStr(FValue, FormatSettings);
DecimalSeparator := FDecimalSeparatorOld;
end;
 
{varSmallInt, varInteger, varBoolean, varShortInt, varByte, varWord, 
varLongWord, varInt64, varUInt64}
if VarIsOrdinal(FValue) then
Result := VarToStr(FValue);
 
// varOleStr, varString, varUString
if VarIsStr(FValue) then
Result := QuotedStr(FValue);
 
// varDate
if VarIsType(FValue, varDate) then
Result := IfThen(pQuoteDate, AnsiQuotedStr(FormatDateTime(pDateTimeFormat, 
VarToDateTime(FValue)), pQuoteDateChar),
FormatDateTime(pDateTimeFormat, VarToDateTime(FValue)));
 
if ((VarIsClear(FValue)) or (VarIsNull(FValue)) or 
(VarIsEmpty(FValue)) or (VarIsError(FValue))) then
Result := pNullString;
 
if pTrimToNull then
if (Result.Trim.IsEmpty) or (Result.DeQuotedString.Trim.IsEmpty) then
Result := pNullString;
end;

Algumas formas de utilização:

1
2
3
Sql := VarToSql(DateEdit.Date);
Sql := VarToSql(DataSet.FieldByName('valor').AsCurrency);
Sql := VarToSql(FNome);
  • Ivan Cesar
  • 0 comentários
  • 16 de julho de 2016

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados