Página 1 de 1

sqlite

Publicado: Jue Oct 02, 2014 11:51 pm
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.

sqlite

Publicado: Vie Oct 03, 2014 10:13 am
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

sqlite

Publicado: Vie Oct 03, 2014 3:22 pm
por Jose Lopez Carrasco
Ignacio,
Gracias por tu pronta respuesta.
Saludos.

sqlite

Publicado: Sab Oct 04, 2014 11:11 am
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

sqlite

Publicado: Sab Oct 04, 2014 1:02 pm
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

sqlite

Publicado: Sab Oct 04, 2014 2:39 pm
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.