En mi proyecto, puzo un campo fecha que viene de un cxDateEdit de DevExpress. En el servidor de aplicaciones, tengo una función que haz gravar en el Banco de Datos, asi:
Código Delphi
[-]'Insert Into Mi_Tabla(Campo_date) values (' + DateToStr(variable_date);
Esto me lo tre un valor NULL y no es NULL, pues si yo hago asi:
Código Delphi
[-]ShowMessage(DateToStr(variable_date));
Funciona. Con certeza estas en la linea "DateToStr()", pues yo tengo un campo DateTime en el banco. Vea mi codigo completo desta funcion en el servidor:
Código Delphi
[-]function InsereOrdemProducao(Conn: TZConnection;s_ordem,s_lote,s_produto,s_valid_lote:string;dt_fab: TDateTime;qde_prod: Double;resp_tec:Integer): OleVariant;
var
Sql:string;
cdsGeral: TZQuery;
begin
Result := False;
cdsGeral := NovoDataSet(Conn);
sql := 'INSERT INTO ORDEM_PRODUCAO(NRO_ORDEM,NRO_LOTE,PRODUTO,LOTE_VALIDADE,DT_FABRICA,QDE_PRODUZIR,RESP_TECNICO)VALUES( ' +
s_ordem + ',' + s_lote + ',' + s_produto + ',' + s_valid_lote + ',' + DateToStr(dt_fab) + ',' +
FloatToStr(qde_prod) + ',' + IntToStr(resp_tec) + ')';
try
cdsGeral.SQL.Text := Sql;
cdsGeral.ExecSQL;
Result := True;
cdsGeral.ApplyUpdates;
except
Result := False;
end;
cdsGeral.Close;
FreeAndNil(cdsGeral);
end;
Y abajo es la llamada a la función, por el client:
Código Delphi
[-]procedure TfrmOrdemProducao.cxButton1Click(Sender: TObject);
begin
if InsereOrdemProducao(quotedstr(edtNroProd.Text),quotedstr(edtNroLote.Text),quotedstr(edtDescricao.Tex t),
quotedstr(edtValidLote.Text),edtDtFabric.Date,edtQde.Value,1) then
ShowMessage('Orçamento realizado com sucesso!')
else
ShowMessage('Erro ao tentar gravar orçamento');
end;
Uso Delphi 7, MySql 5, Zeos y MultiTier.