Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-01-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
Error de Conversion.....

hola a todos....necesito de vuestrar ayuda....xq esto me tiene varios dias de cabeza........
tengo un ficha que representa una orden de compra (maestro - detalle), el problema se da cuando:
- se crea un nuevo registro en blanco.
- asigno valores a los campos, en especial al campo cantidad.
- se realiza el post.
- se produce el error "Could Not Convert variant of type (string) into type (double)"
no da problemas cuando:
- se crea un nuevo registro en blanco.
- asigno valores a los campos, menos al campo cantidad "toma valor por default 0".
- se realiza el post.
- modifico el campo cantidad, relizo el post sin problemas.

necesito sugerencias que me permitan solucionar el problema.....hecho todo lo que se me ocurre....
chau...
Responder Con Cita
  #2  
Antiguo 05-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Tal vez si nos muestras la forma en que estas haciendo la asignación de valores, supongo que por ahí podría estar el problema...

se me ocurre que podrías hacer:
Código Delphi [-]
Valor := TuControl.AsFloat;
__________________

Responder Con Cita
  #3  
Antiguo 05-01-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola ContraVeneno ¡¡

la Asignacion de valores se realiza a otros campos...el campo cantidad es ingresado por teclado...atravez de un DBGrid......asociado...al dataset atravez del dataSource...por lo tanto....el dato que se ingresa es correcto pero me arroja el error.....
Responder Con Cita
  #4  
Antiguo 05-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
me referia a que nos mostraras la parte de código donde te marca el error...
__________________

Responder Con Cita
  #5  
Antiguo 05-01-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
eso es el problema no marca en ningun lado ...el error es enviado por el id delphi..le doy ok y salta el mismo error en el programa.....
ademas no tengo asignado ninguna rutina al campo cantidad ni al before, after del pos....
Responder Con Cita
  #6  
Antiguo 05-01-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
ContraVeneno te envio las rutinas asociadas para que veas ....okis..

crea un ficha que muestra los productos asociados a un proveedor.
Código Delphi [-]
procedure TFichaOrden.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var nro_campo : integer;
    dato      : string;
begin
  case key of
    #13 : begin
            if (DM.tbDet_orden.State = dsInsert) then
            begin
               nro_campo := DBGrid1.SelectedIndex;
               if not (DBGrid1.Fields[nro_campo].IsNull) then
               begin
                  dato      := DBGrid1.Fields[nro_campo].Value + '%';
                  if  (DBGrid1.SelectedField.FieldName = 'id_unidad_venta') then
                  begin
                      with TFichaBuscarUnidad.Create(Self) do
                      try
                        ZQuery1.Close;
                        ZQuery1.SQL.Clear;
                        ZQuery1.SQL.Add('select unidad_venta.id_unidad_venta, unidad_proveedor.codigo_externo,    ');
                        ZQuery1.SQL.Add('       unidad_venta.codigo_barra,                                    ');
                        ZQuery1.SQL.Add('concat(unidad_venta.descripcion," ",unidad_venta.formato) as Descripcion,');
                        ZQuery1.SQL.Add('       unidad_venta.costo,                                               ');
                        ZQuery1.SQL.Add('       existencia.existencia,                                            ');
                        ZQuery1.SQL.Add('       existencia.peso                                                   ');
                        ZQuery1.SQL.Add('from unidad_venta, unidad_proveedor, existencia where                    ');
                        ZQuery1.SQL.Add('unidad_venta.id_unidad_venta = unidad_proveedor.id_unidad_venta and      ');
                        ZQuery1.SQL.Add('unidad_venta.id_unidad_venta = existencia.id_unidad_venta       and      ');
                        ZQuery1.SQL.Add('unidad_proveedor.id_unidad_venta like Id                      and      ');
                        ZQuery1.SQL.Add('existencia.id_almacen            like Id_Almacen              and      ');
                        ZQuery1.SQL.Add('unidad_venta.Bloqueado <> "Si"                                            ');
                        ZQuery1.ParamByName('pId').Value := dato;
                        ZQuery1.ParamByName('pId_Almacen').Value := DM.tbOrdenid_almacen.Value;
                        ZQuery1.Open;
                        ShowModal;
                      finally
                        Free;
                      end;
                  end;
                  if  DBGrid1.SelectedField.FieldName = 'codigo_externo' then
                  begin
                      with TFichaBuscarUnidad.Create(Self) do
                      try
                        ZQuery1.Close;
                        ZQuery1.SQL.Clear;
                        ZQuery1.SQL.Add('select unidad_venta.id_unidad_venta, unidad_proveedor.codigo_externo,    ');
                        ZQuery1.SQL.Add('       unidad_venta.codigo_barra,                                        ');
                        ZQuery1.SQL.Add('concat(unidad_venta.descripcion," ",unidad_venta.formato) as Descripcion,');
                        ZQuery1.SQL.Add('       unidad_venta.costo,                                               ');
                        ZQuery1.SQL.Add('       existencia.existencia,                                            ');
                        ZQuery1.SQL.Add('       existencia.peso                                                   ');
                        ZQuery1.SQL.Add('from unidad_venta, unidad_proveedor, existencia where                    ');
                        ZQuery1.SQL.Add('unidad_venta.id_unidad_venta = unidad_proveedor.id_unidad_venta and      ');
                        ZQuery1.SQL.Add('unidad_venta.id_unidad_venta = existencia.id_unidad_venta       and      ');
                        ZQuery1.SQL.Add('unidad_proveedor.codigo_externo  like Id                      and      ');
                        ZQuery1.SQL.Add('existencia.id_almacen            like Id_Almacen              and      ');
                        ZQuery1.SQL.Add('unidad_venta.Bloqueado <> "Si"                                            ');
                        ZQuery1.ParamByName('pId').Value := dato;
                        ZQuery1.ParamByName('pId_Almacen').Value := DM.tbOrdenid_almacen.Value;
                        ZQuery1.Open;
                        ShowModal;
                      finally
                        Free;
                      end;
                  end;
               end;
            end;
          end;
  end;

Ficha creada......selecciono el elemento y doy enter:

Código Delphi [-]
procedure TFichaBuscarUnidad.DBGrid1KeyPress(Sender: TObject;var Key: Char);
var miQuery : TZQuery;
begin
  if (key = #13) and (ZQuery1.RecordCount <> 0) then
  begin
    miQuery := TZQuery.Create(nil);
    miQuery.Connection := DM.miConexion;
    miQuery.Close;
    miQuery.SQL.Clear;
    miQuery.SQL.Add('select unidad_venta.id_unidad_venta, unidad_venta.descripcion,                   ');
    miQuery.SQL.Add('unidad_venta.formato, unidad_venta.formato_real,unidad_proveedor.codigo_externo  ');
    miQuery.SQL.Add('from unidad_venta, unidad_proveedor where unidad_venta.id_unidad_venta =ID and ');
    miQuery.SQL.Add('unidad_venta.id_unidad_venta = unidad_proveedor.id_unidad_venta              and ');
    miQuery.SQL.Add('unidad_proveedor.rutproveedor =Rut                                             ');
    miQuery.ParamByName('pID').Value  := ZQuery1.FieldValues['id_unidad_venta'];
    miQuery.ParamByName('pRut').Value := DM.tbOrdenrutProveedor.Value;
    miQuery.Open;
    //DM.tbDet_orden.Edit;
    DM.tbDet_ordenid_unidad_venta.Value := miQuery.FieldValues['id_unidad_venta'];
    DM.tbDet_ordencodigo_externo.Value  := miQuery.FieldValues['codigo_externo'];
    DM.tbDet_ordendescripcion.Value     := miQuery.FieldValues['descripcion'];
    DM.tbDet_ordenformato.Value         := miQuery.FieldValues['formato'];
    DM.tbDet_ordenformato_real.Value    := miQuery.FieldValues['formato_real'];
   // DM.tbDet_Orden.Post;
    close;
  end;
end;
Responder Con Cita
  #7  
Antiguo 06-01-2007
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
Tal vez el problema es que difieren el formato de número que tiene la BD y el formato local de la PC donde realizas la captura. Algo similar me sucede cuando ejecuto un programa con la config regional de Mexico, ya que el programa y bd en Access fueron hechos con la config de UK, es como si la pc local mandara un 1,234.98 al campo numérico y la bd espera 1.234,98

Saludos
__________________
eLcHiCoTeMiDo - Rompecorazones profesional
Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos?
Salva a un nylon, usa prendas de piel de foca
Responder Con Cita
  #8  
Antiguo 06-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
como sugeria en mensajes anteriores, deberias utilizar:

Código Delphi [-]
DM.tbDet_ordendescripcion.AsString:=miQuery.FieldByName('descripcion').AsString;

lo mismo puedes utilizar AsString, como AsInteger, AsDateTime, AsFloat... en fin, según requieras...

Al utilizar:
Código Delphi [-]
DM.tbDet_ordendescripcion.Value:=miQuery.FieldValues['descripcion'];
esta última en algunas ocasiones (como puede ser este caso) te puede ocasionar errores de conversión.
__________________

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
Conversion .DXF .SHP JCarlosas Gráficos 5 18-05-2006 02:54:05
Error conversion from string '26/01/2006' ZRR Firebird e Interbase 5 27-01-2006 23:56:12
Conversion senpiterno Varios 1 25-06-2004 15:43:58
Conversión botones67 Varios 1 11-11-2003 17:37:11
conversion BMP -> PCX dmariscal Gráficos 1 10-06-2003 01:56:17


La franja horaria es GMT +2. Ahora son las 11:23:50.


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