Error con adordd al añadir funcion

Error con adordd al añadir funcion

Postby JoseLuis » Thu Jun 21, 2007 7:18 pm

Hola amigos
He comenzado con el tema de adordd mas MySQL, y funciona bien con un listbox, pero al añadir una funcion que me copia el contenido de la tabla a una dbf me da el siguiente error[url][URL=http://imageshack.us]Image[/url][/url]
el codigo de la funcion que he añadido es el siguiente
Code: Select all  Expand view
Function descarga(aAlias)
recogidas->(Dbgotop())
Do while !recogidas->(Eof())
(aAlias[30])->( dbappend())
While .not. ((aAlias[30])->(Rlock())); end
(aAlias[30])->Fecha    := recogidas->Fecha
(aAlias[30])->Fecha1   := recogidas->Fecha
(aAlias[30])->Pro      := recogidas->compania
(aAlias[30])->Pro1     := recogidas->nombrer
(aAlias[30])->domi     := recogidas->calle
(aAlias[30])->domi1    := recogidas->caller
(aAlias[30])->tel      := ""
(aAlias[30])->tel1     := ""
(aAlias[30])->pobla    := recogidas->Pobla
(aAlias[30])->pobla1   := recogidas->Poblar
(aAlias[30])->conductor:= "00006"
(aAlias[30])->nconductor:=" "
(aAlias[30])->hora     := recogidas->hora
(aAlias[30])->notas    := recogidas->comentario
(aAlias[30])->codpobla := " "
(aAlias[30])->rutar    := "60"
(aAlias[30])->turno    := "T"
(aAlias[30])->operador := "INTERNET"
(aAlias[30])->( dbUnlock() )
recogidas->(Dbskip())
enddo
Recogidas->(Dbzap())
return nil


Esta claro que estoy manejando mal la tabla que se llama "recogidas", yo pensaba se se utiliza igual que una dbf.
Algunas veces al aceptar en el mensaje de error, se dispara la cantidad de mensajes, me salen un monton en cascada y acaban con uno que habla algo de recursividad.

A ver si alguien me aclara algo

Saludos
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Thu Jun 21, 2007 7:25 pm

Prueba a comentar esta línea y comprueba si sigue dando el error:

// Recogidas->(Dbzap())
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Thu Jun 21, 2007 9:58 pm

La he comentado y sigue igual, solo me admite el do while si en éste pongo sólo mensajes informativos, si pongo alguna referencia al alias de la dbf casca, aunque sólamente sea bloquearla, simplemente con poner (aAlias[30])->(rlock()), ya sale el error, y después de éste error, por si sirve de pista, sale siempre este error
[url][URL=http://imageshack.us]Image[/url][/url]

que parece que hace referencia a llenado de memoria.
Si quito cualquier referencia a la dbf, no da el error, pero no puedo grabar los datos en la dbf.

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Thu Jun 21, 2007 10:14 pm

Prueba a revisar los campos:
Code: Select all  Expand view
for n = 1 to recogidas->( FCount() )
   MsgInfo( recogidas->( FieldName( n ) ) )
next
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Thu Jun 21, 2007 10:31 pm

Me va informando de los nombres de los campos de la tabla, y cuando acaba, si al mover el raton, me aparece un mensaje de error que ya me salio en tiempos y lo solucioné poniendo al comienzo de la aplicacion EXTERNAL ORDKEYCOUNT, pero aun así me ha vuelto a salir
[url][URL=http://imageshack.us]Image[/url][/url]

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby JoseLuis » Fri Jun 22, 2007 7:24 am

Cuando acaba el bucle, y llega al último campo da el error, no sale del bucle, ya que le pongo un msginfo fuera del bucle y no llega a éste

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby JoseLuis » Fri Jun 22, 2007 7:50 am

Si hago lo siguiente:
Code: Select all  Expand view
recogidas->(Dbgotop())
Do while !recogidas->(Eof())
msginfo(recogidas->compania)
enddo


Me va informando del contenido del campo compania.

Pero si dentro del do while incluyo algo referente a la dbf a la que quiero descargar, aunque sólo sea una llamada al bloqueo no fuencina:
Code: Select all  Expand view
recogidas->(Dbgotop())
Do while !recogidas->(Eof())
msginfo(recogidas->compania)
While .not. ((aAlias[30])->(Rlock())); end
enddo


Me tiene frito ésto.

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Fri Jun 22, 2007 8:16 am

Que RDD usa aAlias[30] ?

Que nombre contiene aAlias[30] ?

Por curiosidad, haz: MsgInfo( aAlias[30] )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Fri Jun 22, 2007 8:22 am

(aAlias[30]) es un alias de la DBF "Avisos", y la abro así
Code: Select all  Expand view
  dbUseArea(.T.,,Publicas:cUnidad+Publicas:cSubd+"\Avisos",aAlias[30],.T.)


Con indices CDX, y en el resto de a aplicación funciona bien.

Es un entorno MDI, por lo que para cada usario es un valor distinto.

No se que mas decirte
Seguro que es alqo que se me escapa


Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby JoseLuis » Fri Jun 22, 2007 8:44 am

Creo que la cuestión va a estar en el envío de los parámetros de una función a otra, me explico
Antes de abrir la dbf Avisos, hago una comprobación del nombre del alias para éste usuario.
Code: Select all  Expand view
aAlias:= cargaAlias()

Function CargaAlias
*******************

return { ;
         cGetNewAlias( "ARTICULO" ),;   // 1
         cGetNewAlias( "MUNICI" )  ,;   // 2
         cGetNewAlias( "PROVIN" )  ,;   // 3
         cGetNewAlias( "PROPIE" )  ,;   // 4
    cGetNewAlias( "SEAT1"  )  ,;   // 5
         cGetNewAlias( "RAPPEL" )  ,;   // 6
         cGetNewAlias( "EQUIPO" )  ,;   // 7
         cGetNewAlias( "REFEREN" ) ,;   // 8
    cGetNewAlias( "MATERIAL" ),;   // 9
         cGetNewAlias( "VEHICULO" ),;   // 10
    cGetNewAlias( "TIPOS" )   ,;   // 11
    cGetNewAlias( "CANON" )   ,;   // 12
    cGetNewAlias( "TEXTOS" )  ,;   // 13
    cGetNewAlias( "IMAGEN" )  ,;   // 14
               ,;   // 15
               ,;   // 16
               ,;   // 17
    cGetNewAlias( "PARTE" )   ,;   // 18
    cGetNewAlias( "FIESTAS" ) ,;   // 19
    cGetNewAlias( "VACAS" )   ,;   // 20
    cGetNewAlias( "PROVE" )   ,;   // 21
    cGetNewAlias( "FACTURA" ) ,;   // 22
    cGetNewAlias( "ALMACEN" ) ,;   // 23
    cGetNewAlias( "ALBARAN" ) ,;   // 24
    cGetNewAlias( "EXTRAS" )  ,;   // 25
    cGetNewAlias( "CONDUC" )  ,;   // 26
    cGetNewAlias( "GASTOS" )  ,;   // 27
    cGetNewAlias( "REEMBOL" ) ,;   // 28
         cGetNewAlias( "RUTA" )    ,;   // 29
         cGetNewAlias( "AVISOS" )  ,;   // 30
         cGetNewAlias( "NALBARAN" ) ;   // 31
   }


Luego abro la dbf:
Code: Select all  Expand view
  dbUseArea(.T.,,Publicas:cUnidad+Publicas:cSubd+"\Avisos",aAlias[30],.T.)
  (aAlias[30])->(OrdSetFocus("Fecha1"))


Y luego cuando paso de una funcion a otra que va a utilizar el alias, lo paso por referencia:
Code: Select all  Expand view
  DEFINE BUTTON RESOURCE "MUNDO"   OF oBar NOBORDER MESSAGE "Visualizar Los Avisos en Internet"  ACTION (cTitulo:="Visualización de Avisos en Internet",mirasql(cTitulo,aAlias));
         WHEN Publicas:cAccesoC;
         TOOLTIP "Visualizar Los Avisos en Internet"


Luego la funcion que recibe esto está así:
Code: Select all  Expand view
static function mirasql(titulo,aAlias)
local oDlg, oLbx,n

USE mi_base VIA "ADORDD" TABLE "recogidas" MYSQL ;
FROM "mi_sitio" USER "usuario" PASSWORD "contraseña" alias "recogidas"

DEFINE DIALOG oDlg FROM 1, 1 TO 25, 79
oDlg:cTitle:=titulo
@ 1, 1 LISTBOX oLbx FIELDS recogidas->fecha, ;
recogidas->compania, ;
recogidas->Nombrer, ;
recogidas->Caller, ;
recogidas->Poblar, ;
recogidas->Comentario ;
HEADERS "Fecha ","Avisado por:","Recoger en:","Domicilio","Poblacion","Observaciones" ;
FIELDSIZES 45,100,100,100,60,100 ;
SIZE 284, 137 OF oDlg

oLbx:nLineStyle := 1
oLbx:nClrBackHead := RGB(248,191,36)
oLbx:bTextColor:= {|nRow,nCol,nStyle| If( nStyle==0 .and. nCol==8,CLR_HRED, ) }
oLbx:nClrPane:={||iIF((oLbx:cAlias)->(OrdKeyNo())%2==0,nRGB(242,247,252),nRGB(226,226,208))}

@154,08 BTNBMP LEFT PROMPT " Agregar" SIZE 50,19 OF oDlg RESOURCE "grabasql" ACTION oDlg:End()
@154,67 BTNBMP LEFT PROMPT " Modificar" SIZE 50,19 OF oDlg RESOURCE "modifisql" ACTION oDlg:End()
@154,125 BTNBMP LEFT PROMPT " Borrar" SIZE 50,19 OF oDlg RESOURCE "borrasql" //ACTION BorraU(oLbx )
@154,184 BTNBMP LEFT PROMPT " Buscar" SIZE 50,19 OF oDlg RESOURCE "buscasql" //ACTION BuscaU(oLbx,3,"Color")
@154,242 BTNBMP LEFT PROMPT " Salir" SIZE 50,19 OF oDlg RESOURCE "salirsql" ACTION (oDlg:End())

ACTIVATE DIALOG oDlg CENTERED
// esto lo he puesto aqui de momento para probar
recogidas->(Dbgotop())
Do while !recogidas->(Eof())
While .not. ((aAlias[30])->(Rlock())); end
(aAlias[30])->( dbappend())
(aAlias[30])->Fecha    := recogidas->Fecha
(aAlias[30])->Fecha1   := recogidas->Fecha
(aAlias[30])->Pro      := recogidas->compania
(aAlias[30])->Pro1     := recogidas->nombrer
(aAlias[30])->domi     := recogidas->calle
(aAlias[30])->domi1    := recogidas->caller
(aAlias[30])->tel      := ""
(aAlias[30])->tel1     := ""
(aAlias[30])->pobla    := recogidas->Pobla
(aAlias[30])->pobla1   := recogidas->Poblar
(aAlias[30])->conductor:= "00006"
(aAlias[30])->nconductor:=" "
(aAlias[30])->hora     := recogidas->hora
(aAlias[30])->notas    := recogidas->comentario
(aAlias[30])->codpobla := " "
(aAlias[30])->rutar    := "60"
(aAlias[30])->turno    := "T"
(aAlias[30])->operador := "INTERNET"
(aAlias[30])->( dbUnlock() )
recogidas->(Dbskip())
enddo
// Recogidas->(Dbzap())
recogidas->(Dbclosearea())

RETURN NIL


Lo que he observado es que con ésta estructura, que funciona perfectamente sólo con dbf, cuando meto por medio el tema de adordd, me da error en la dbf.

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Fri Jun 22, 2007 8:53 am

Pon un MsgInfo() justo aqui:

ACTIVATE DIALOG oDlg CENTERED
// esto lo he puesto aqui de momento para probar
MsgInfo( aAlias[30] )
recogidas->(Dbgotop())
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Fri Jun 22, 2007 8:59 am

"AVISOS"

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Fri Jun 22, 2007 10:15 am

Jose Luis,

Estás usando el ADORDD más reciente descargado desde:

www.fivetechsoft.com/files/adordd.zip ?

El mismo que está en www.noway.com/files/adordd.zip
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JoseLuis » Fri Jun 22, 2007 10:35 am

Estoy utilizando esa versión
Incluyo adordd.prg en la compilación, así como las dos librerias que vienen para xharbour.
Yo utilizo FWH 2.9 la de octubre de 2006.

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Antonio Linares » Fri Jun 22, 2007 11:04 am

Parece que el problema viene de que se produce un error y desde el errorsys vuelve a crearse otro error, asi que prueba a cambiar el ErrorBlock():

ErrorBlock( { | oError | MsgInfo( oError:Description ) } )

y prueba de nuevo tu aplicación a ver que mensaje te aparece
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 20 guests