Error cuando Cancelo Adicion de Nuevo Registro Usando ADO en Oracle
Publicado: Vie Mar 30, 2007 6:12 am
Buenas Noches
Estoy usando como base de datos Oracle Express para una aplicacion de
sincronizacion de data entre un ERP en visual Fox y un sistema en equipos
pocket PC.
Luego del cambio a la version 1.3b y de cambiar la version del IDE por los
problemas del tamaño de las ventanas, ahora me esta dando el siguiente error
:
***************************** Registro de errores
*****************************
Fecha: 03/29/07
Hora: 22:01:36
Memoria libre: 45708
Area actual: 1
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 1.3.2 Version 1.3b
Compilador: xHarbour build 0.99.61 Intl. (SimpLex) PCode Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Professional 5.01.2600 Service Pack 2
----------------------- Información detallada del
error -----------------------
Subsistema: ADODB.RecordSet
Código de error: 16389
Estado: .F.
Descripción: E_FAIL
Operación: CANCELUPDATE
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TOLEAUTO:CANCELUPDATE (0)
(b)XADORECORDS:XADORECORDS (51)
TADORECORDS:CANCEL (0)
TSQLTABLE:CANCEL (514)
TFRMRUTA:MANTENALTA (98)
TMAIN:MANTENALTA (151)
TOPTIONITEM:ONCLICK (0)
TOPTIONITEM:CLICK (273)
TOPTIONLIST:WMLBUTTONDOWN (0)
RUNFORM (0)
TAPPLICATION:RUN (208)
MAIN (15)
**********************************************************
En las versiones anteriores 1.1 a 1.2 el procedimiento me funciono bien
(Luego que me sugirio que creara un Dataset vacio para la adicion de un
nuevo registro). Esto me pasa luego de que cancelo un intento de agregar un
nuevo registro. Adjunto incluyo parte del procedimiento.
**********************************************************
METHOD MantenAlta( oSender ) CLASS TFrmRuta
// Local clFIlter := ::odbBrowse1:lFilterBar
Local clBusca
::odbbrowse1:savestate(.t.)
IF ::odbBrowse1:lFilterBar
::odbBrowse1:lFilterBar := .f.
Endif
WITH OBJECT ::oSQLTable2 := TSQLTable():New( Self )
:oDataSource := ::oAdoDataSource1
:cProcess := "GENERAL"
:nCursorType := adOpenDynamic
:nLockType := adLockOptimistic
:cTableName := "PDA_RUTAS WHERE RUTA=' '"
:Create()
END
::oSqltable2:lOpen:=.T.
WITH OBJECT TFRMRUTAS()
:lOnAppend := .t.
:New( Application:oMainForm )
::osqltable2:addnew()
:cText := "Agregar Rutas"
:RequestState()
IF :ShowModal() == mrOK
::osqltable2:Update()
clBusca := ::osqltable2:Ruta
::osqlTable1:Refresh()
::osqlTable1:locate("Ruta='"+clBusca+"'" )
::Odbbrowse1:refresh()
::asignarico()
ELSE
::osqltable2:Cancel()
ENDIF
END WITH
::osqltable2:destroy()
::odbbrowse1:restorestate(.t.)
RETURN NIL
**********************************************************
Agradecere su ayuda para la solucion de este problemilla ya que es la misma
rutina que uso para la actualizacion de todas las tablas en mi aplicacion.
Saludos
Fernando Hernandez
Estoy usando como base de datos Oracle Express para una aplicacion de
sincronizacion de data entre un ERP en visual Fox y un sistema en equipos
pocket PC.
Luego del cambio a la version 1.3b y de cambiar la version del IDE por los
problemas del tamaño de las ventanas, ahora me esta dando el siguiente error
:
***************************** Registro de errores
*****************************
Fecha: 03/29/07
Hora: 22:01:36
Memoria libre: 45708
Area actual: 1
------------------------- Información del
compilador --------------------------
Versión Xailer: Xailer 1.3.2 Version 1.3b
Compilador: xHarbour build 0.99.61 Intl. (SimpLex) PCode Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Professional 5.01.2600 Service Pack 2
----------------------- Información detallada del
error -----------------------
Subsistema: ADODB.RecordSet
Código de error: 16389
Estado: .F.
Descripción: E_FAIL
Operación: CANCELUPDATE
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TOLEAUTO:CANCELUPDATE (0)
(b)XADORECORDS:XADORECORDS (51)
TADORECORDS:CANCEL (0)
TSQLTABLE:CANCEL (514)
TFRMRUTA:MANTENALTA (98)
TMAIN:MANTENALTA (151)
TOPTIONITEM:ONCLICK (0)
TOPTIONITEM:CLICK (273)
TOPTIONLIST:WMLBUTTONDOWN (0)
RUNFORM (0)
TAPPLICATION:RUN (208)
MAIN (15)
**********************************************************
En las versiones anteriores 1.1 a 1.2 el procedimiento me funciono bien
(Luego que me sugirio que creara un Dataset vacio para la adicion de un
nuevo registro). Esto me pasa luego de que cancelo un intento de agregar un
nuevo registro. Adjunto incluyo parte del procedimiento.
**********************************************************
METHOD MantenAlta( oSender ) CLASS TFrmRuta
// Local clFIlter := ::odbBrowse1:lFilterBar
Local clBusca
::odbbrowse1:savestate(.t.)
IF ::odbBrowse1:lFilterBar
::odbBrowse1:lFilterBar := .f.
Endif
WITH OBJECT ::oSQLTable2 := TSQLTable():New( Self )
:oDataSource := ::oAdoDataSource1
:cProcess := "GENERAL"
:nCursorType := adOpenDynamic
:nLockType := adLockOptimistic
:cTableName := "PDA_RUTAS WHERE RUTA=' '"
:Create()
END
::oSqltable2:lOpen:=.T.
WITH OBJECT TFRMRUTAS()
:lOnAppend := .t.
:New( Application:oMainForm )
::osqltable2:addnew()
:cText := "Agregar Rutas"
:RequestState()
IF :ShowModal() == mrOK
::osqltable2:Update()
clBusca := ::osqltable2:Ruta
::osqlTable1:Refresh()
::osqlTable1:locate("Ruta='"+clBusca+"'" )
::Odbbrowse1:refresh()
::asignarico()
ELSE
::osqltable2:Cancel()
ENDIF
END WITH
::osqltable2:destroy()
::odbbrowse1:restorestate(.t.)
RETURN NIL
**********************************************************
Agradecere su ayuda para la solucion de este problemilla ya que es la misma
rutina que uso para la actualizacion de todas las tablas en mi aplicacion.
Saludos
Fernando Hernandez