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 03-06-2011
river_1 river_1 is offline
Miembro
 
Registrado: may 2010
Posts: 55
Poder: 15
river_1 Va por buen camino
Red face Error al Insertar en una Tabla

Buenas a todos,tengo una situacion bien rara al insertar registros en una tabla,dejenme les explico de manera rapida, es un sistema de punto de venta que hice donde tengo una tabla temporal donde guardo las notas, estas notas tienen una columna que se llama comentarios y otra se llama SUB.
En la tabla temporal se guarda muy bien estos campos en su respectiva nota de venta, el problema viene con el corte , es decir, cuando paso la tabla temporal a donde se guardan todos los cortes, si la primer nota de venta tiene valores en cualquiera de las 2 columnas los otros registros les replica el mismo valor en dicha columna haciendo que las notas posteriores guarden ese valor.
Le pongo el codigo delphi para que vean como le hago y ver si no se me esta escapando algo:
Código Delphi [-]
//Se insertan los encabezados de las Notas a la tabla de encabezados de la historia
      consulta3:='Select * From TempVentaHeader';
      QryInsertaHeader.SQL.Clear;
      QryInsertaHeader.SQL.ADD(consulta3);
      QryInsertaHeader.Open;
      QryInsertaHeader.First;
      while not QryInsertaHeader.Eof do
       begin
        TblHeader.Insert;
        TblHeader.FieldByName('Noventa').AsInteger:=QryInsertaHeaderNVENTA.Value;
        tblheader.FieldByName('Fecha').AsDateTime:=QryInsertaHeaderFECHA.Value;
        tblheader.FieldByName('TOTAL').AsFloat:=QryInsertaHeaderTOTAL.Value;
        tblheader.FieldByName('UTILIDAD').AsFloat:=QryInsertaHeaderUTILIDAD.Value;
        tblheader.FieldByName('costo').AsFloat:=QryInsertaHeaderCOSTO.Value;
        tblheader.FieldByName('pago').AsFloat:=QryInsertaHeaderPAGO.Value;
        tblheader.FieldByName('Turno').AsString:=QryInsertaHeaderTURNO.Value;
        tblheader.FieldByName('Cliente').AsString:='Venta al Publico en General';
        tblheader.FieldByName('Cambio').AsFloat:=0;
        tblheader.FieldByName('NOMBRE').AsString:=FRMPASSCORTE.usuario;
        tblheader.FieldByName('TOTALDLLS').AsFloat:=QryInsertaHeaderTOTALDLLS.Value;
        tblheader.FieldByName('PAGODLLS').AsFloat:=QryInsertaHeaderPAGODLLS.Value;
        tblheader.FieldByName('CAMBIO').AsFloat:=QryInsertaHeaderCAMBIODLLS.Value;
        tblheader.FieldByName('CANCELADA').AsString:=QryInsertaHeaderCANCELADA.Value;
        tblheader.FieldByName('Comentarios').AsString:=QryInsertaHeaderCOMENTARIOS.Value;
        tblheader.FieldByName('SUB').AsString:=QryInsertaHeaderSUB.Value;
        tblheader.Post;
        QryInsertaHeader.Next
      end;


Lo raro es que ejecuto el programa linea x linea y el valor me indica en blanco para los registro que no tienen valor pero al abrir la tabla ya tienen valor esas columnas.
Gracias por sus respuestas...

Última edición por ecfisa fecha: 03-06-2011 a las 23:59:19. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 04-06-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Smile Siempre que tengas problemas con nulos usas FielByName

El problema debe ser por los valores nulos proba lo siguiente.

Código Delphi [-]
//Se insertan los encabezados de las Notas a la tabla de encabezados de la historia
      consulta3:='Select * From TempVentaHeader';
      QryInsertaHeader.SQL.Clear;
      QryInsertaHeader.SQL.ADD(consulta3);
      QryInsertaHeader.Open;
      QryInsertaHeader.First;
      while not QryInsertaHeader.Eof do
       begin
        TblHeader.Insert;
        TblHeader.FieldByName('Noventa').AsInteger:=QryInsertaHeader.FieldByName('NVENTA').asinteger;
        tblheader.FieldByName('Fecha').AsDateTime:=QryInsertaHeader.FieldByName('FECHA').asdatetime;
  ........................................
        tblheader.FieldByName('SUB').AsString:=QryInsertaHeader.FieldByName('SUB').asstring;
        tblheader.Post;
        QryInsertaHeader.Next
      end;

Bueno, proba eso y contadnos como te fue.
Responder Con Cita
  #3  
Antiguo 06-06-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
y que onda, solucionaste

y que onda, solucionaste
Responder Con Cita
  #4  
Antiguo 08-06-2011
river_1 river_1 is offline
Miembro
 
Registrado: may 2010
Posts: 55
Poder: 15
river_1 Va por buen camino
Una disculpa pero me llene de trabajo, mira lo que me comentaste me llevo a ver cual era el problema , de hecho con un query no funciona el Fieldbyname sino la funcion fieldvalues, las use y en el momento que llego a un registro que no tenia valor me marco un error que no se podia insertar un valor nulo , es decir, el cambio que me dijiste no fue la solucion pero me ayudo a saber cual era el error cosa que el codigo original no me lo indicaba y para subsanar ese error el delphi tomaba el ultimo valor y me lo repetia para que no quedar en blanco o sea que me queria ayudar el Delphi pero a la vez me perjudicaba .

En fin lo solucione dandole un valor por default al campo desde que se inserta en la tabla temporal y que no este en blanco.
Gracias...
Responder Con Cita
  #5  
Antiguo 08-06-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
No gracias a vos.

No gracias a vos por entrar en comentar cual fue la solución que usaste, podrías postear el código el día de mañana alguien le va a pasar lo mismo que a vos y le resultara más fácil, si pones lo que hiciste.

corrijo: ¿No anda con un query FieldByname?, que componentes usas, que version de delphi usas?, yo siempre uso query y fieldbyname

Última edición por martinartaza fecha: 08-06-2011 a las 03:35:52. Razón: somprendido.
Responder Con Cita
  #6  
Antiguo 20-06-2011
river_1 river_1 is offline
Miembro
 
Registrado: may 2010
Posts: 55
Poder: 15
river_1 Va por buen camino
De hecho el codigo lo deje igual lo unico que hice fue que esos campos al momento de insertar un registro (evento onNewrecord) de la tabla le puse valores por default.
Uso adoquery y delphi 7 , no se si por usar ADO no exista la propiedad Fieldby name por eso solo me pone la propiedad queryvalue.
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
Error en funcion almacenada para insertar datos a tabla dark_monk9 PostgreSQL 3 16-01-2012 14:57:31
No se porque tengo un error cuando intento insertar en la tabla Anyu Conexión con bases de datos 11 15-07-2008 23:45:40
Error al insertar fecha en tabla DBF cocomo SQL 2 05-02-2007 17:24:46
Error de Sintaxis al Insertar datos a una tabla desde otra alastor SQL 9 28-09-2006 18:27:09
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla taru MySQL 1 27-07-2006 15:36:12


La franja horaria es GMT +2. Ahora son las 01:57:33.


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