Error con adordd al añadir funcion

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

Error con adordd al añadir funcion

Post by JoseLuis »

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=http://imageshack.us][img]http://i ... .jpg[/img][/url]
el codigo de la funcion que he añadido es el siguiente

Code: Select all

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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

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

Antonio Linares
www.fivetechsoft.com
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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=http://imageshack.us][img]http://i ... .jpg[/img][/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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Prueba a revisar _:

Code: Select all

for n = 1 to recogidas->( FCount() )
   MsgInfo( recogidas->( FieldName( n ) ) )
next
regards, saludos

Antonio Linares
www.fivetechsoft.com
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

Me va informando de los nombres de _ 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=http://imageshack.us][img]http://i ... .jpg[/img][/url]

Saludos

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

Post by JoseLuis »

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: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

Si hago lo siguiente:

Code: Select all

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

recogidas->(Dbgotop())
Do while !recogidas->(Eof())
msginfo(recogidas->compania)
While .not. ((aAlias[30])->(Rlock())); end
enddo
Me tiene frito ésto.

Saludos

Jose Luis
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Que RDD usa aAlias[30] ?

Que nombre contiene aAlias[30] ?

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

Antonio Linares
www.fivetechsoft.com
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

(aAlias[30]) es un alias de la DBF "Avisos", y la abro así

Code: Select all

  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: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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

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

  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

  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

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

"AVISOS"

Saludos

Jose Luis
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Post Reply