consulta dolphin

consulta dolphin

Postby surGom » Fri Aug 21, 2015 2:47 pm

Hola compañeros, estoy pasando un programa de tymsql a dolphin, y me surgió este error con las fechas

Code: Select all  Expand view
  Error description: Error MYSQL/1292  Incorrect date value: '    -  -  ' for column 'fecha' at row 1

Stack Calls
===========
   Called from: .\source\prg\tdolpsrv.prg => DOLPHIN_DEFERROR( 2807 )
   Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:CHECKERROR( 793 )
   Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:SQLQUERY( 2024 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SAVE( 1456 )
   Called from: factura1.prg => ACEPTO( 365 )
   Called from: factura1.prg => (b)FACTURA( 128 )


El código es el siguiente :

Code: Select all  Expand view

   IF lnueva
      oQryfac:GetBlankRow(.f.)
   ENDIF

   oQryfac:ncli := oCta:ncli
   oQryfac:nrofac := oCta:pventa + "-" + oCta:factura
   oQryfac:fecha := oCta:fecha                                LÍNEA 365
   oQryfac:importe := oCta:ntotal
   oQryfac:plazo := oCta:condicion
   oQryfac:baseimpo := oCta:subtotal
   oQryfac:iva := oCta:niva
   oQryfac:ingbruto := oCta:ib
   oQryfac:tipo := oCta:tipocom
   oQryfac:letra := oCta:letra

   oQryfac:save()
   oQryfac:end()
 


El seteo de fechas lo tengo como set date british
el oCta: es por la utilización de la clase tarray

Y en la tabla de la base de datos está como americana "2015-08-21"
Con tymsql no me daba este error, como tendría que grabar este dato en dolphin sin modificar la base de datos

Gracias por vuestra atención

Luis

Por lo demas casi no tuve que hacer cambios
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby cmsoft » Fri Aug 21, 2015 3:08 pm

Hola Luis:
Si la variable es de tipo fecha, dolphin hace el pasaje automaticamente, pero si lo que contiene oCta:fecha es un string, deverias pasarlo a fecha antes de asignarselo a oQryfac:fecha. La fecha vacía deveria ser "0000-00-00" y no " - - " me parece a mi...
Sino proba con hacer:
Code: Select all  Expand view
oQryFac:fecha := STRTRAN(oCta:fecha," ","0")
Siempre y cuando oCta:fecha sea string...
User avatar
cmsoft
 
Posts: 1204
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: consulta dolphin

Postby surGom » Fri Aug 21, 2015 3:20 pm

Cmsoft hice un valtype de oCta:fecha y me lo declara como campo fecha

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby surGom » Fri Aug 21, 2015 3:32 pm

Bueno ahora hice esta prueba

Code: Select all  Expand view


   oQryfac :=  oMysql:Query( cQryfac )
   IF lnueva
      oQryfac:GetBlankRow()
   ENDIF

   oQryfac:ncli := oCta:ncli
   oQryfac:nrofac := oCta:pventa + "-" + oCta:factura
   oQryfac:fecha := Date()
   oQryfac:importe := oCta:ntotal
   oQryfac:plazo := oCta:condicion
   oQryfac:baseimpo := oCta:subtotal
   oQryfac:iva := oCta:niva
   oQryfac:ingbruto := oCta:ib
   oQryfac:tipo := oCta:tipocom
   oQryfac:letra := oCta:letra

   oQryfac:save()
   oQryfac:end()
 


y me sigue dando el mismo error
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby joseluisysturiz » Fri Aug 21, 2015 4:25 pm

Para los campos tipos fecha o numericos usa al operarlo ClipValue2SQL(), funciona al pelo, y en tu tabla colocale valor por defecto '0000-00-00' para que no te los traiga NULL, espero te sirva, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: consulta dolphin

Postby surGom » Fri Aug 21, 2015 6:12 pm

Gracias José Luis pero tampoco funciona, da el mismo error. lo que hice fue

oQrycta:fecha := ClipValue2SQL(oCta:fecha)

Descarto un error en la base de datos ya que si utilizo el programa compilado com tmysql de wormar, funciona bien. Abro la base con sqlyog y se ve todo perfectamente.

Estoy compilando con dolphin de fivewin y harbour 3.2

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby joseluisysturiz » Fri Aug 21, 2015 6:28 pm

El error te lo da cuando es un registro nuevo o cuando modificas..? si es cuando modificas antes de grabar, verifica que datos tiene la VAR que le pasas al campo de tipo fecha, yo inicio mis VAR tipo fechas asi:

cVar := date()

pasandolo a la tabla
oQryFecha := ClipValue2SQL(cVar)

pero no uso oQry:save(), si no que hago el grabado en la tabla con INSERT INTO...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: consulta dolphin

Postby cmsoft » Fri Aug 21, 2015 11:20 pm

La funcion ClipValue2Sql la utiliza internamente el metodo SAVE de dolphin, por lo tanto cuando se hace SAVE no hay que hacer ClipValue2Sql antes, pues pasarias a darle una variable tipo string.
Prueba poner, antes de hacer el SAVE 2 mensajes para ver que tipo de datos y que dato tiene fecha, MsgInfo(oQryFac:fecha) y MsgInfo(VALTYPE(oQryFac:fecha)) y mira que valores te esta poniendo, asi tenemos otra pista.
User avatar
cmsoft
 
Posts: 1204
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: consulta dolphin

Postby surGom » Fri Aug 21, 2015 11:59 pm

Muchachos en la base de datos estaba declarada como not null, le quite el not null, y ahora no me da problema.

Mejor dicho me da otro error en la siguiente línea

Code: Select all  Expand view

oQryfac:nrofac := oCta:pventa + "-" + oCta:factura  (1)
 


que es por ejemplo "0001" + "-" + "00000010"

en la base de datos esta declarada como varchar de ancho 13

el error es

Code: Select all  Expand view
Message not found: TDOLPHYNQRY: nrofac


Dije anteriormente que no me dió problemas porque comenté esta línea (1) y me grabo correctamente todas los otros campos.

Tienen idea porque dolphin no reconoce ese campo nrofac, ya que también lo tengo declarado de esa forma en otra tabla y me da el mismo error.

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby cmsoft » Sat Aug 22, 2015 12:02 am

Hace la misma prueba, pone antes de enviar a grabar con el SAVE un mensaje a ver que te deja en esa variable. Asi vas teniendo mas pistas..
No es un problema de dolphin ya que yo casualmente tambien tengo campos con el mismo nombre... Fijate que tipo de datos es antes de enviar a grabar
User avatar
cmsoft
 
Posts: 1204
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: consulta dolphin

Postby surGom » Sat Aug 22, 2015 12:31 am

Cmsoft me muestra "0001-00000010" y tipo caracter

pero lo que me muestra el error es

Code: Select all  Expand view
 Error description: Error BASE/1005  Message not found: TDOLPHYNQRY: nrofac

Stack Calls
===========
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:_NROFAC( 1881 )
   Called from: factura1.prg => ACEPTO( 378 )
   Called from: factura1.prg => (b)FACTURA( 128 )
   Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 175 )


Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby joseluisysturiz » Sat Aug 22, 2015 12:54 am

surGom wrote:Cmsoft me muestra "0001-00000010" y tipo caracter

pero lo que me muestra el error es

Code: Select all  Expand view
 Error description: Error BASE/1005  Message not found: TDOLPHYNQRY: nrofac

Stack Calls
===========
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:_NROFAC( 1881 )
   Called from: factura1.prg => ACEPTO( 378 )
   Called from: factura1.prg => (b)FACTURA( 128 )
   Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 175 )


Luis


Como te comentamos antes, define en tu tabla que tome valor por defecto '0000-00-00' para los campos fechas y ese error que te da es que no existe el campo nrofac, revisa en tu tabla como la tienes creada, como dice CMSoft, si usas oQry:Save() no hace falta el Clip, por eso dije que yo lo usaba por que no uso el Save(), avisa cualquier mejora o detalle...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: consulta dolphin

Postby surGom » Sat Aug 22, 2015 1:33 am

Aquí les muestro como está declarada la base de facturas utilizando sqlyog comunity

https://www.4shared.com/photo/jp06nOcTba/factura.html

y en este lo que esta grabado en la misma con el programa anterior (tmysql)

https://www.4shared.com/photo/huNx-0z5ce/factura1.html


Y en estas la de proveedores

https://www.4shared.com/photo/Ns2XUyq1ba/facpro.html

idem anterior


En las dos bases de datos falla con el mensaje que no existe nrofac

Luis

https://www.4shared.com/photo/fCd8b8cQce/facpro1.html
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: consulta dolphin

Postby joseluisysturiz » Sat Aug 22, 2015 4:47 am

surGom wrote:Aquí les muestro como está declarada la base de facturas utilizando sqlyog comunity

https://www.4shared.com/photo/jp06nOcTba/factura.html

y en este lo que esta grabado en la misma con el programa anterior (tmysql)

https://www.4shared.com/photo/huNx-0z5ce/factura1.html


Y en estas la de proveedores

https://www.4shared.com/photo/Ns2XUyq1ba/facpro.html

idem anterior


En las dos bases de datos falla con el mensaje que no existe nrofac

Luis

https://www.4shared.com/photo/fCd8b8cQce/facpro1.html


No sera que no estas llamando ese campo en tu consulta.? si usas SELECT * FROM tu_tabla te los traera todos, pero si estas diciendo cuales campos o estas haciendo algun JOIN debes decir que campos quieres usar, coloca algo de codigo de tus consultas haber si es eso, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: consulta dolphin SOLUCIONADO

Postby surGom » Sat Aug 22, 2015 9:04 pm

Les cuento el error estaba en que realmente el campo nrofac existe en la tabla Factura y facpro, pero el error lo daba en la tabla ctac(cuentas corrientes), y ayer con el cansancio el primero que veía era oQryfac:nrofac y el error estaba en oQrycta:nrofac que no existe en la tabla de cuentas corrientes. El problema fue que en tmysql ignora que no existe oQrycta:nrofac y graba todos los demas campos sin marcar el error. Por eso me confundí.

Este es el prg que utilizo con tmsyql hace tres años y nunca me tiró el error ni el de la fecha ni este que es mas grave, ya que nrofac no existe en la tabla.

Code: Select all  Expand view
STATIC FUNCTION ACEPTO(oMysql, lnueva, lcliente,nboton, lcredito, aItem)
LOCAL cQuery
LOCAL cQryfac
LOCAL oQrycta
LOCAL oQryfac
LOCAL cQuerysto := "SELECT * FROM detalle"
LOCAL oQrysto
LOCAL z := 0



if empty(oCta:ntotal)
   msgstop("No hay datos para grabar","Ingrese datos")
   return nil
endif

if  lcliente
  cQuery:=   "SELECT * FROM ctacte ORDER by ncli"
  cQryfac :=  "SELECT * FROM factura ORDER by nrofac"
else
  cQuery:=   "SELECT * FROM ctacp ORDER by ncli"
  cQryfac :=  "SELECT * FROM facpro ORDER by nrofac"
endif



   oQryfac :=  oMysql:Query(cQryfac)
   if lnueva
     oQryfac:blank()
   endif

   oQryfac:ncli := oCta:ncli
   oQryfac:nrofac := oCta:pventa + "-"+ oCta:factura
   oQryfac:fecha := oCta:fecha
   oQryfac:importe := oCta:ntotal
   oQryfac:plazo := oCta:condicion
   oQryfac:baseimpo := oCta:subtotal
   oQryfac:iva := oCta:niva
   oQryfac:ingbruto := oCta:ib
   oQryfac:tipo := oCta:tipocom
   oQryfac:letra := oCta:letra

   oQryfac:save()
   oQryfac:end()


  oQrycta :=  oMysql:Query(cQuery)

  if lnueva
    oQrycta:blank()
  endif

  oQrycta:ncli := oCta:ncli
  oQrycta:nrofac := oCta:pventa + "-"+ oCta:factura                                //AQUÍ TRONABA EL PROGRAMA CON DOLPHIN
  oQrycta:fecha := oCta:fecha
  oQrycta:descripcion :=  oCta:tipocom
  oQrycta:importe := oCta:ntotal
  oQrycta:tipo := iif(lcredito,"2","1")
  oQrycta:pventa := oCta:pventa
  oQrycta:numero := oCta:factura
  oQrycta:tipodoc := iif(lcredito,"C","F")
  oQrycta:save()
  oQrycta:end()

   if lnueva
       oQrysto := oMysql:Query(cQuerysto)
       for z = 1 to len(oCta:adet)
           oQrysto:blank()
            iif(lcliente,oQrysto:ncli := oCta:ncli, oQrysto:npro := oCta:ncli)
           oQrysto:codigo := oCta:adet[z,1]
           oQrysto:nrofac := oCta:pventa + "-"+ oCta:factura
           oQrysto:costo := oCta:adet[z,6]
           oQrysto:fecha := oCta:fecha
           oQrysto:cantidad := oCta:adet[z,5]
           oQrysto:save()
       next
       oQrysto:end()
   endif

   nboton:disable()
   if lcliente .and. oCta:condicion != "Contado"
       if msgyesno("¿Desea imprimir documentos?","Documentos")
         impdoc(aItem)
       endif
   endif


Les ruego sepan disculpar la segunda consulta y les agradezco la presteza y dedicación que tuvieron para ayudarme a solucionarlo.
Les aclaro que el programa con tmysql hasta el día de hoy es el que utilizo en mi negocio y nunca me dió ningún problema. Lo que pasa es que este nuevo lo estoy haciendo con harbour y la clase tmysql hecha por wormar esta hecha para xharbour y como compilo con xverce y hace tiempo esta funcionando mal, ya que no muestra la línea de error cuando compila, hace un tiempo empezé a pasarlo a dolphin, casi sin ningún cambio.

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Antonio Linares and 28 guests