In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

sqlite

Foro de Xailer profesional en español
Responder
Jose Lopez Carrasco
Mensajes: 215
Registrado: Lun Oct 20, 2008 11:38 pm

sqlite

Mensaje por Jose Lopez Carrasco »

Hola a todos.
Alguien me puede decir que es lo que estoy haciendo mal.
Este error no se produce siempre.
Gracias.
Pepe.
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 3.2.0
Compilador: Harbour 3.2.0dev (r1310281618)
Compilador C/C++: MinGW GNU C 4.8.1 (32-bit)
Plataforma: Windows XP 5.1.2600 Service Pack 3
----------------------- Información detallada del
error -----------------------
Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: No existe el método
Operación: ODATASOURCE
Argumentos: [ 1] = Tipo: U Valor: NIL
Fichero:
Código error SO: 0
Pila de llamadas:
ODATASOURCE (0)
(b)XSQLITERECORDS (24)
TSQLITERECORDS:ODATASOURCE (0)
TSQLITERECORDS:DBSTRUCT (303)
TSQLITERECORDS:QUERYALL (243)
TSQLITERECORDS:OPEN (183)
TSQLQUERY:OPEN (318)
TFORMDIARIO:MASKEDITCODARTICULOEXIT (190)
TMASKEDIT:ONEXIT (0)
TEDIT:VALID (956)
TMASKEDIT:VALID (158)
TMASKEDIT:WMKILLFOCUS (67)
TFORMDIARIO:SHOWMODAL (0)
TFORMMENU:MENUGENERALITEM2_1CLICK (72)
TMENUITEM:ONCLICK (0)
TMENU:DOACTION (252)
TMENU:DOACTION (257)
TFORMMENU:WMCOMMAND (934)
RUNFORM (0)
TAPPLICATION:RUN (286)
MAIN (39)
--
Jose Lopez
Triton Computer, S.L.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

sqlite

Mensaje por ignacio »

Hola,
Sin ver el código fuente es difí­cil, pero el mensaje de error es claro, estás llamando a un miembro de clase de nombre 'ODATASOURCE' que no existe. Lo más probable es que la falte un '1' al final, o vete tu a saber cual es el verdadero problema.
Mi recomendación, usa el DEPURADOR, los usuarios de Clipper siempre lo hemos evitado, -yo el primero-, pero tengo que decirte que ahora no podrí­a vivir sin él de Xailer.
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez Carrasco
Mensajes: 215
Registrado: Lun Oct 20, 2008 11:38 pm

sqlite

Mensaje por Jose Lopez Carrasco »

Ignacio,
Gracias por tu pronta respuesta.
Saludos.
Jose Lopez Carrasco
Mensajes: 215
Registrado: Lun Oct 20, 2008 11:38 pm

sqlite

Mensaje por Jose Lopez Carrasco »

Ignacio,
En este metodo es donde se produce el error. Cuando hacer el :open()
despues de haber cerrado la consulta y volverla ha abrir.
El error no se produce siempre.
Gracias.
METHOD MaskEditCodArticuloExit( oSender, oNextCtl ) CLASS TFormDiario
Local xRetorno := Nil, aDatos := {}, aHeaders, cTitular := ""
If oNextCtl == Nil //.OR. oNextCtl:IsKindOf( "TGlassBtn" )
//xRetorno := .F.
RETURN xRetorno
ElseIf ToString(oNextCtl:Cargo,"NADA") $"AYUDA;SALIR"
RETURN xRetorno
Else
If !Empty(oSender:Value)
aDatos := ::oSQLiteDSDatos:QueryRow("SELECT MATRICULA,TITULAR FROM
MATRICULAS WHERE MATRICULA = '"+oSender:Value+"'",@aHeaders)
IF Empty(aDatos)
//oSender:Value := ""
//oSender:Undo()
//MsgBeep()
//MsgAlert("Matricula no existente.")
xRetorno := MsgNoYes("Matricula no
existente."+CRLF+"Crear?","OK")
Else
cTitular := aDatos[2] // 1=matricula,2=titular
ENDIF
Else
MsgAlert("Matricula incorrecta.","ERROR")
xRetorno := .F.
EndIf
EndIf
::oMaskEditTitular:Value := cTitular
::oDBBrowseTrabajos:lEnabled := .F.
WITH OBJECT ::oSQLQueryTrabajos
If :lOpen
:Close()
EndIf
:cSelect := "SELECT RowId,* FROM TRABAJOS WHERE MATRICULA = ? ORDER
BY FECHA"
:aSQLParams := { oSender:Value }
:Open()
//////////////////////////////////////////////////////////// /// aqui se
produce el error
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /
END WITH
::oDBBrowseTrabajos:lEnabled := .T.
::lMatricula := Empty(aDatos) // Si es verdadero no existe matricula
RETURN xRetorno
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

sqlite

Mensaje por ignacio »

Buenos dí­as,
Da la sensación de que en algún momento se está destruyendo el datasource. Si el datasource está vinculado a un formulario, ten en cuenta que cuando éste se destruye también se destruyen todos sus componentes incluidos los Datasources que pudiese tener vinculados.
Si ese es el caso te recomiendo que simplemente crees el datasource por código. Si tienes dudas, simplemente mira como se crea en el archivo XFM.
Si no te hubiese sido de ayuda lo dicho, te ruego que hagas un pequeño ejemplo que pueda mostrar el problema. Gracias de antemano.
Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez Carrasco
Mensajes: 215
Registrado: Lun Oct 20, 2008 11:38 pm

sqlite

Mensaje por Jose Lopez Carrasco »

En Otro formulario lo que hago es:
::oSQLQuery1:oDataSource := oSender:oParent:oSQLiteDSDatos
Pero nunca lo destruyo.
Probare con lo que tu me indicas.
Mil Gracias.
Responder