browse con ado

browse con ado

Postby Ramon Paredes » Mon Feb 25, 2008 6:43 pm

Amigos del foro,

Tengo este programa de Altas, Bajas y Cambios y este browse con ADO , todo funciona OK, pero cuando le doy modificar y no hago nada oprimo el boton cancelar me manda error , si presiono escape para que salga sin modificar nada da el mismo error

pplication
===========
Path and name: C:\sist_sql\MUESTRA\MUESTRA.exe (32 bits)
Size: 2,147,840 bytes
Time from start: 0 hours 0 mins 9 secs
Error occurred at: 25/02/2008, 12:42:16
Error description: Error adodb.recordset/6 DISP_E_UNKNOWNNAME: MOVE
Args:
[ 1] = N -6

Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:MOVE(0)
Called from: muestra.prg => SKIPPER(463)
Called from: muestra.prg => (b)TABLAS(301)
Called from: WBROWSE.PRG => TWBROWSE:SKIP(0)
Called from: WBROWSE.PRG => TWBROWSE:PAINT(0)
Called from: WBROWSE.PRG => TWBROWSE:DISPLAY(0)
Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => DIALOGBOX(0)
Called from: DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: muestra.prg => TABLAS(400)
Called from: muestra.prg => (b)BUILDMENU(122)
Called from: MENU.PRG => TMENU:COMMAND(0)
Called from: WINDOW.PRG => TWINDOW:COMMAND(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TWINDOW:ACTIVATE(0)
Called from: muestra.prg => MAIN(102)

que podra ser, cualquier ayuda sera bienvenida,





Public oCon := TOLEAUTO():New("adodb.connection")
oCon:Open("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=127.0.0.1 ; DATABASE=sistema; UID=root; PWD=1234")

PRIVATE oRs := TOLEAUTO():New("adodb.recordset")
Public dTipo[1],dNatural

dNatural :={"Deudora","Acreedora"}

PRIVATE oRs1 := TOLEAUTO():New("adodb.recordset")
oRs1:LockType := adLockOptimistic
oRs1:CursorType := adOpenKeyset
oRs1:CursorLocation := adUseClient
oRs1:ActiveConnection(oCon)
oRs1:Source := "Select * from tabla_eeff"
oRs1:Open()

dTipo[1] = oRs1:Fields("cod_eeff"):Value+"-"+oRs1:Fields("concepto"):Value
oRs1:Movenext()
do while !oRs1:eof()
AADD( dTipo, oRs1:Fields("cod_eeff"):Value+"-"+oRs1:Fields("concepto"):Value )
oRs1:MoveNext()
enddo
oRs1:Close()

PRIVATE oRs := TOLEAUTO():New("adodb.recordset")
oRs:LockType := adLockOptimistic
oRs:CursorType := adOpenKeyset
oRs:CursorLocation := adUseClient
oRs:ActiveConnection(oCon)
oRs:Source := "Select * from catalogo"
oRs:Open()

Public oDlg, oFld
Public oBtnCancel
public oLbx,oBtn

DEFINE DIALOG oDlg RESOURCE 14

REDEFINE FOLDER oFld ID 110 OF oDlg ;
PROMPT "&Catalogo "," C&uentas ", " &Documentos "," &T/Cambios "," Tab&la EEFF "," &Firmas Aut." ;
DIALOGS 18 //,18,18,18,18,18

REDEFINE INFOBAR oInfoBar ID 100 GRADIENT;
BITMAP "WORKER.BMP" LEFT PROMPT "Tablas de Contabilidad" CENTER ;
COLOR CLR_WHITE TEXT "" LEFT COLOR CLR_YELLOW ;
OF oDlg UPDATE BORDER

REDEFINE LISTBOX oLbx FIELDS oRs:Fields("codigo"):Value, ;
oRs:Fields("nombre"):Value, ;
oRs:Fields("naturaleza"):Value, ;
oRs:Fields("eeff"):Value ,;
oRs:Fields("afectar"):Value ;
FIELDSIZES 100,250,100,250,50 ;
HEADERS "Codigo","Nombre de la Cuenta","Naturaleza","Ubic. EEFF","s/n" ;
COLOR CLR_HBLUE,CLR_WHITE ;
ID 108 of oFld:aDialogs[1]


oLbx:aJustify ={.F.,.F.,.f.,.f.,.f.}
oLbx:bLogicLen = { || oRs:RecordCount() }
oLbx:bGoTop = { || oRs:MoveFirst() }
oLbx:bGoBottom = { || oRs:MoveLast() }
oLbx:bSkip = { | nSkip | Skipper( oRs, nSkip ) }
oLbx:cAlias = "ARRAY"

REDEFINE BUTTON ID 102 OF oFld:aDialogs[1] ACTION( EditC1(.t.,oLbx ) ,oFld:aDialogs[1]:Refresh() )
REDEFINE BUTTON ID 103 OF oFld:aDialogs[1] ACTION( EditC1(.f.,oLbx ),oFld:aDialogs[1]:Refresh() )
REDEFINE BUTTON ID 104 OF oFld:aDialogs[1] ACTION( BorrO( oLbx ), oLbx:Refresh(),oFld:aDialogs[1]:Refresh() )
// REDEFINE BUTTON ID 106 OF oFld:aDialogs[1] ACTION( Busca1(), oLbx:Refresh(),oFld:aDialogs[1]:Refresh() )
REDEFINE BUTTON ID 105 OF oFld:aDialogs[1] ACTION ( oDlg:End() )

ACTIVATE DIALOG oDlg CENTERED

RETURN

//=================================
FUNCTION EditC1(SiNuevo, oLbx )
//=================================

Local oDlg, lSalvar := .f.

IF sinuevo = .t.
oRs:ADDNEW() // crea un nuevo registro en blanco
oRs:Fields("codigo"):value := SPACE(12)
oRs:Fields("nombre"):value := SPACE(45)
oRs:Fields("naturaleza"):value := SPACE(10)
oRs:Fields("eeff"):value := SPACE(50)
oRs:Fields("afectar"):value = .f.
ENDIF

LoadLibrary("BWCC32.DLL")

DEFINE BRUSH oBrush FILENAME "OSXBack.bmp"

DEFINE DIALOG oDlg RESOURCE 23 BRUSH oBrush TRANSPARENT

REDEFINE INFOBAR oInfoBar ID 100 GRADIENT;
BITMAP "otro.BMP" LEFT PROMPT "Catalogo de Cuentas Contables" CENTER ;
COLOR CLR_WHITE TEXT "" LEFT COLOR CLR_YELLOW ;
OF oDlg UPDATE BORDER

REDEFINE VIABITMAP oBitmap1 ID 150 FILE "WORKER.BMP" OF oDlg

REDEFINE GET oRs:Fields("codigo"):value ID 101 of oDlg
REDEFINE GET oRs:Fields("nombre"):value ID 102 of oDlg
REDEFINE COMBOBOX oRs:Fields("naturaleza"):value ID 103 of oDlg PROMPTS dNatural
REDEFINE COMBOBOX oRs:Fields("eeff"):value ID 104 of oDlg PROMPTS dTipo
REDEFINE CHECKBOX oRs:Fields("afectar"):value ID 105 of oDlg

REDEFINE BUTTON ID 106 OF oDlg action ( lSalvar := .T. , oDlg:End() )
REDEFINE BUTTON ID 107 OF oDlg ACTION ( lSalvar := .F. , oDlg:End() ) CANCEL

ACTIVATE DIALOG oDlg CENTERED

IF lSalvar
oRs:UPDATE()
IF !empty(oRs:Filter)
oRs:REQUERY()
ENDIF
ELSE
IF SiNuevo
oRs:DELETE()
oRs:REQUERY()
ENDIF
ENDIF

RETURN

//======================================
STATIC FUNCTION SKIPPER( oRs, nSkip )
//======================================

LOCAL nRec := oRs:AbsolutePosition

oRs:Move( nSkip )

IF oRs:EOF()
oRs:MoveLast()
ENDIF

IF oRs:BOF()
oRs:MoveFirst()
ENDIF

RETURN oRs:AbsolutePosition - nRec

//================================
STATIC FUNCTION BORRO( oLbx )
//================================

oRs:Delete()
oRs:Requery()

oLbx:Refresh()

RETURN


Saludes desde Managua, Nicaragua

Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
User avatar
Ramon Paredes
 
Posts: 215
Joined: Fri Feb 02, 2007 3:38 pm
Location: Managua, Nicaragua

Amigo....

Postby leandro » Tue Feb 26, 2008 3:44 pm

Amigo creo que es por que estas escribiendo en el campo (indice) un valor que ya existe. O tambien sucede cuando no estas escribiendo un valor en el campo y este esta definido como NOT NULL.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1485
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

ok, revisare

Postby Ramon Paredes » Tue Feb 26, 2008 6:19 pm

Gracias Leandro por tu respuesta, chequeare eso y veremos,

Saludos desde Managua, Nicaragua

Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
User avatar
Ramon Paredes
 
Posts: 215
Joined: Fri Feb 02, 2007 3:38 pm
Location: Managua, Nicaragua

Re: browse con ado

Postby jfafive » Wed May 13, 2009 9:39 am

Hola amigos,

Tengo un problema que llevo intentando solucionar unos días.
Pero no sé que puede ser.

Tengo un recordset que abro con la siguiente cadena:

Code: Select all  Expand view
cStrSql := "SELECT * FROM tabla"


Funciona perfectamente,
Pero si hago una operación de modificación,

Code: Select all  Expand view
cStrSql := "UPDATE tabla SET nombre = 'juan'"


Ocurre algo muy extraño. El recordset se abre y se realiza la actualización en la tabla.
Pero cuando cierro el recordse, me produce un error:

Code: Select all  Expand view

Application
===========
   Path and name: c:\FWH\prueba\prueba.exe (32 bits)
   Size: 2,117,120 bytes
   Time from start: 0 hours 0 mins 12 secs
   Error occurred at: 13-05-09, 11:38:12
   Error description: Error ADODB.RecordSet/6  DISP_E_UNKNOWNNAME: CLOSE
   Args:
 


¿alguien sabe que podría ser?
:(
Javier,
FWH 8.04 2008
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: browse con ado

Postby jfafive » Wed May 13, 2009 11:15 am

Bueno!

Parece que lo he solucionado por el momento.
Lo que he hecho es no implicar al recordset.
Sino que actualizo solo con la conexión y así no hay que usar recordset.

Como muestro en este ejemplo:
Code: Select all  Expand view

#include "ado.ch"

function Main()

   local cStrSql, oCnnDb, cConnectionString

   oCnnDb := TOleAuto():New( "ADODB.Connection" )

   cStrSql := "UPDATE prueba SET nombre = 'luisa'"

   cConnectionString := "Driver={SQL Server}"                   + ;
                        ";Server=MISVR\SQLEXPRESS"    + ;
                        ";Database=prueba"                    + ;
                        ";Trusted_Connection=yes"

   oCnnDb:connectionString := cConnectionString
   oCnnDb:Open()

   oCnnDb:Execute( cStrSql )
   oCnnDb:Close()

return nil
 


:wink:
Javier,
FWH 8.04 2008
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Male and 39 guests