Amigos Ayuda URGENTE Clipper 5.3

Post Reply
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Amigos Ayuda URGENTE Clipper 5.3

Post by Miguel Rivera »

Amogos:

Me he metido en un problema, he cambiado de clipper 5.2e a clipper 5.3, debido a que necesitaba algunas cosas que 5.2e no me soporta.

Al compilar con clipper 5.3, Fw 2.2 y Blinker 7.0

Ejecute modulos que estaban funcionando en clipper 5.2e y ahora ya no funcionan. El problema puntual es que USO INDICES CDX. y al hacer un seek codigo, me indica que la base no esta indexsada.

Necesito en forma urgente por solucionar este problema.

Saludos

Miguel

Muestro parte del codigo:

En el LNK, me pide que declare las librerias Dbfcdx.lib y _Dbfcdx.lib, antes en clipper 5.2e, solo indicaba Dbfcdx.lib

ANNOUNCE RDDSys
INIT Procedure RDDInit()
REQUEST DBFCDX // Causes DBFcdx RDD to be linked in
rddSetDefault( "DBFCDX" ) // Set up DBFcdx as default driver

**
.. BASE INDEXSADA

sele 1
Use Departa Shared Alias oDbdep New
Set inde to Departa
set rela to Cod_pro into Proyecto,Cod_pro+Cod_edi into Edificio,cod_ori into Oridep,Cod_tip into Tipodep

** Donde busco y se produce el ERROR que declaro
sele a
DbSeek(Cod_pro1+Cod_edi1+Cod_dep1)

Este es el registro del ERROR

Application
===========
Path and name: C:\UTIL\VTADPTO\INMOBILI.EXE
Size: 430,784 bytes
Max files handles permited: ( SetHandleCount() ) 255
Error ocurred at: 18/01/2007, 17:44:40
Error description: Error _DBFCDX/1201 Workarea not indexed

Stack Calls
===========
Called from DBSEEK(0)
Called from EXISTE_DEP(301)
Called from (b)ACTUDEP1(207)
Called from TGET:LVALID(0)
Called from TGET:FWLOSTFOCU(0)
Called from TGET:HANDLEEVEN(0)
Called from DIALOGBOX(0)
Called from TDIALOG:ACTIVATE(0)
Called from ACTUDEP1(237)
Called from (b)ACTUDEP(76)
Called from TBTNBMP:CLICK(0)
Called from TBTNBMP:LBUTTONUP(0)
Called from TBTNBMP:HANDLEEVEN(0)
Called from DIALOGBOX(0)
Called from TDIALOG:ACTIVATE(0)
Called from ACTUDEP(117)
Called from (b)MENU(128)
Called from TMENU:COMMAND(0)
Called from TMDIFRAME:COMMAND(0)
Called from TMDIFRAME:COMMAND(0)
Called from TMDIFRAME:HANDLEEVEN(0)
Called from WINRUN(0)
Called from TMDIFRAME:ACTIVATE(0)
Called from TUTOR(94)

System
======
CPU type: 486
Hardware memory: 66240 (64 megas)

Free System resources: % 58
GDI resources: % 58
User resources: % 63

Windows and MsDos versions: 3.95, 7.10
Windows total applications running: 24
1 C:\WINDOWS\EXPLORER.EXE
2 C:\WINDOWS\SYSTEM\USER.EXE
3 C:\WINDOWS\SYSTEM\SHLWAPI.DLL
4 C:\WINDOWS\SYSTEM\COMCTL32.DLL
5 C:\WINDOWS\SYSTEM\BROWSEUI.DLL
6 C:\MULTIE~1\MEWLIB32.DLL
7 C:\ARCHIV~1\MSNMES~1\MSNMSGR.EXE
8 C:\ARCHIV~1\WINAMP\WINAMPA.EXE
9 C:\UTIL\VTADPTO\INMOBILI.DLL
10 C:\UTIL\VTADPTO\INMOBILI.EXE
11 C:\WINDOWS\SYSTEM\WINOA386.MOD
12 C:\WINDOWS\SYSTEM\MSHTML.DLL
13 C:\WINDOWS\SYSTEM\URLMON.DLL
14 C:\ARCHIV~1\SPYBOT~1\SDHELPER.DLL
15 C:\WINDOWS\SYSTEM\OLE32.DLL
16 C:\WINDOWS\SYSTEM\DDEML.DLL
17 C:\WORKSHOP\WORKED3.DLL
18 C:\WINDOWS\SYSTEM\DDHELP.EXE
19 C:\WINDOWS\SYSTEM\IMON.DLL
20 C:\ARCHIV~1\WINZIP\WZQKPICK.EXE
21 C:\WINDOWS\SYSTEM\STIMON.EXE
22 C:\WINDOWS\SYSTEM\WEBCHECK.DLL
23 C:\ARCHIV~1\ARCHIV~1\REAL\UPDATE~1\REALSC~1.EXE
24 C:\WINDOWS\LOADQM.EXE
25 C:\WINDOWS\SYSTEM\SYSTRAY.EXE
26 C:\WINDOWS\PTSNOOP.EXE
27 C:\WINDOWS\TASKMON.EXE
28 C:\WINDOWS\SYSTEM\MMSYSTEM.DLL
29 C:\WINDOWS\SYSTEM\MSTASK.EXE
30 C:\WINDOWS\SYSTEM\IENPSTUB.DLL
31 C:\WINDOWS\SYSTEM\SPOOL32.EXE
32 C:\WINDOWS\SYSTEM\MSGSRV32.EXE
33 C:\WINDOWS\SYSTEM\E_S5I4A1.EXE
34 C:\WORKSHOP\WORKSHOP.EXE
35 C:\WINDOWS\SYSTEM\SHDOC401.DLL

Variables in use
================
Procedure Type Value
==========================
DBSEEK
Param 1: C "PR1 DEP1125 "
EXISTE_DEP
Param 1: C "PR1 "
Param 2: C "DEP1"
Param 3: C "125 "
Local 1: L .T.
Local 2: N 4
(b)ACTUDEP1
Param 1: O Class: TGET
TGET:LVALID
Local 1: O Class: TGET
Local 2: L .T.
TGET:FWLOSTFOCU
Local 1: O Class: TGET
TGET:HANDLEEVEN
Param 1: N 2057
Param 2: N 0
Param 3: N 0
DIALOGBOX
Param 1: N 23951
Param 2: C "Departamento"
Param 3: N 2540
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Local 1: O Class: TDIALOG
Local 2: N 2540
Local 3: U
Local 4: U
Local 5: U
Local 6: O Class: TDIALOG
ACTUDEP1
Param 1: L .T.
Local 1: U
Local 2: U
Local 3: O Class: TGET
Local 4: O Class: TSAY
Local 5: O Class: TSAY
Local 6: U
Local 7: O Class: TGET
Local 8: O Class: TDIALOG
Local 9: O Class: TGET
Local 10: O Class: TSAY
Local 11: O Class: TGET
Local 12: U
Local 13: O Class: TGET
Local 14: U
Local 15: U
Local 16: O Class: TFONT
Local 17: U
Local 18: U
Local 19: U
Local 20: U
Local 21: O Class: TGET
Local 22: U
Local 23: O Class: TCOMBOBOX
Local 24: U
(b)ACTUDEP
Param 1: O Class: TBTNBMP
TBTNBMP:CLICK
Local 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
Param 1: N 19
Param 2: N 38
Param 3: O Class: TBTNBMP
Local 1: U
Local 2: L .T.
TBTNBMP:HANDLEEVEN
Param 1: N 514
Param 2: N 0
Param 3: N 1245222
DIALOGBOX
Param 1: N 23951
Param 2: C "LISTAMAE"
Param 3: N 2312
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Local 1: O Class: TDIALOG
Local 2: N 2312
Local 3: U
Local 4: U
Local 5: U
Local 6: O Class: TDIALOG
ACTUDEP
Local 1: U
Local 2: U
Local 3: U
Local 4: N 0
Local 5: U
Local 6: U
Local 7: U
Local 8: U
Local 9: U
Local 10: U
Local 11: U
Local 12: U
Local 13: A Len: 4
Local 14: N 1
Local 15: U
Local 16: O Class: TDIALOG
Local 17: O Class: TCBROWSE
Local 18: U
Local 19: N 1
(b)MENU
Param 1: O Class: TMENUITEM
TMENU:COMMAND
Param 1: N 20009
Local 1: O Class: TMENU
Local 2: O Class: TMENUITEM
TMDIFRAME:COMMAND
Param 1: N 20009
Param 2: N 0
Local 1: O Class: TMDIFRAME
Local 2: N 0
Local 3: N 20009
Local 4: N 0
TMDIFRAME:COMMAND
Param 1: N 20009
Param 2: N 0
Local 1: O Class: TMDIFRAME
Local 2: U
TMDIFRAME:HANDLEEVEN
Param 1: N 273
Param 2: N 20009
Param 3: N 0
WINRUN
Param 1: N 2312
TMDIFRAME:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: B { || ... } CodeBlock
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: B { || ... } CodeBlock
Param 18: U
Param 19: U
Local 1: O Class: TMDIFRAME
Local 2: U
Local 3: U
TUTOR
Local 1: O Class: TBRUSH
Local 2: O Class: TICON
Local 3: U
Local 4: O Class: TCURSOR
Local 5: O Class: TBAR
Local 6: U
Local 7: U
Local 8: N 12854

Linked RDDs
===========
DBF
_DBFCDX
DBFCDX

DataBases in use
================

1: => ODBDEP RddName: _DBFCDX
==============================
RecNo RecCount BOF EOF
4 4 .F. .F.

Indexes in use TagName
Cod_pro+Cod_edi+Cod_dep DEPARTA1
Cod_edi+Cod_dep DEPARTA2
Cod_dep DEPARTA3

Relations in use
1: TO Cod_pro INTO PROYECTO
2: TO Cod_pro+Cod_edi INTO EDIFICIO
3: TO cod_ori INTO ORIDEP
4: TO Cod_tip INTO TIPODEP

10: PROYECTO RddName: _DBFCDX
==============================
RecNo RecCount BOF EOF
1 2 .F. .F.

Indexes in use TagName
=> Cod_pro PROYEC1
Nom_pro PROYEC2

Relations in use

11: EDIFICIO RddName: _DBFCDX
==============================
RecNo RecCount BOF EOF
1 2 .F. .F.

Indexes in use TagName
cod_pro+Cod_edi EDIFI1
Nom_edi EDIFI2
Cod_edi EDIFI3

Relations in use
1: TO Cod_pro INTO PROYECTO

12: TIPODEP RddName: _DBFCDX
==============================
RecNo RecCount BOF EOF
4 4 .F. .F.

Indexes in use TagName
Cod_tip TIPODEP1

Relations in use

13: ORIDEP RddName: _DBFCDX
==============================
RecNo RecCount BOF EOF
2 3 .F. .F.

Indexes in use TagName
Cod_ori ORIDEP1

Relations in use

Classes in use:
===============
1 TBRUSH
2 TWINDOW
3 TCONTROL
4 TICON
5 TCURSOR
6 TMDIFRAME
7 TMENU
8 TMENUITEM
9 TMDICLIENT
10 TDIALOG
11 TBAR
12 TRECT
13 TBTNBMP
14 TMSGBAR
15 TFONT
16 TMSGITEM
17 TTIMER
18 TSAY
19 TWBROWSE
20 TCBROWSE
21 TCCOLUMN
22 TBUTTON
23 TSCROLLBAR
24 TBITMAP
25 TGET
26 GET
27 TCOMBOBOX
28 ERROR

Memory Analysis
===============
Static memory:
data segment: 64k
Initial size: 30624 bytes (SYMP=696, Stack=8192, Heap=2056)
Clipper Stack: 34449 bytes
33 Static variables: 462 bytes

Dynamic memory consume:
Actual Value: 864134 bytes
Highest Value: 997254 bytes
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

En el peor de _ borra los cdx que se crearon anteriormente y vuelve a crearlos bajo Clipper 5.3 con el añadido de que debes incluir la libreria _DBFCDX.LIB en lu link.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Re: Amigos Ayuda URGENTE Clipper 5.3

Post by Miguel Rivera »

Armando:

La libreria _DBFCDX.LIB, se encuentra incluida en el archivo LNK, y genere los archivos de nuevo, pero el error persiste.

Me nace la duda, si abri la Base con el indice que incluye los TAG, cada vez que deba accesar debo asignar el SetOrder del tag.?

En la version 5.2e mantenia el orden del indice, aun que fuera a otra Function(), al parecer 5.3 tengo que indicar cada vez el orden.

En espera de una respuesta,

Saludos, Miguel
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Debes linkear la _DBFCDX junto con la DBFCDX.

Atencion.... las versiones 5.3, 5.3a tienen algunos problemas precisamente con los indices CDX, la version que debes utilizar es la 5.3b.
Saludos
R.F.
User avatar
A&C
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Post by A&C »

Miguel como creaste los indices

yo uso clipper 5.3 y no tengo problemas uso CDX tambien


If SELECT("Producto")>0
SELECT Producto
Else
USE Producto NEW ALIAS Producto SHARED
Endif


Select Producto
Producto->(OrdSetFocus(1)) Asi menciono q Dbf quiero usar y que TAG
..<aca> la rutina q quieras
Mi segundo amor es Programar
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

Como anotan los amigos del foro, no deberías tener problemas por usar Clipper 5.3. Si el error persiste, verifica que la version sea 5.3b caso contrario necesitas esta version. Si no es eso vas a tener que remitir el codigo para ver que puede estar ocasionandote el error...
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post by Miguel Rivera »

Hola Amigo:

Te cuento asi creo los indices:

if !file('Departa.cdx')
sele 1
use Departa Exclusi
inde on Cod_pro+Cod_edi+Cod_dep tag departa1 to Departa
inde on Cod_edi+Cod_dep tag departa2 to Departa
inde on Cod_dep tag departa3 to Departa

use
Endif

Asi Abro la Base

sele 1
Use Departa Shared Alias oDbdep New
Set inde to Departa

Como en clipper 5.2e, el indice se mantiene abierto aunque pase a otra function(), en clipper 5.3 me dice que la base no esta indexada, cuando trato de ir a buscar un registro como muestro el caso.

Aqui se Cae, me indica que no esta indexada.

sele a
DbSeek(Cod_pro1+Cod_edi1+Cod_dep1)

1. Sacame de esta duda, cada vez que tenga que accesar una base, debo identificar en orde del indice?

En espera de una respuesta,

Saludos,

Miguel

A&C wrote:Miguel como creaste los indices

yo uso clipper 5.3 y no tengo problemas uso CDX tambien


If SELECT("Producto")>0
SELECT Producto
Else
USE Producto NEW ALIAS Producto SHARED
Endif


Select Producto
Producto->(OrdSetFocus(1)) Asi menciono q Dbf quiero usar y que TAG
..<aca> la rutina q quieras
User avatar
A&C
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Post by A&C »

el orden del indice por defecto es el primero ,,,
pero si te mueves de TAG siempre debes mencionar que orden deceas usar

por eso: yo siempre lo uso asi...

Sabes yo hago esto :

1.- tengo una rutina independiente del programa que solo me crea los CDX

Asi::

#include "Ord.ch"
CLS
Dbcloseall()
//
USE CLIENTES NEW
INDEX ON Clientes->Rut TAG Rutcliente
INDEX ON Clientes->Razon TAG Razoncliente
INDEX ON Clientes->Saldo TAG Saldocliente
INDEX ON Clientes->tcate TAG Tcatecliente
INDEX ON Clientes->codcli TAG Codcliente
INDEX ON Clientes->codrut TAG Crutcliente

//
USE PROVEEDO NEW
INDEX ON Proveedo->Rut TAG RutProveedo
INDEX ON Proveedo->Razon TAG RazonProveedo
INDEX ON Proveedo->Saldo TAG SaldoProveedo
INDEX ON Proveedo->codpro TAG CodProveedo
INDEX ON Proveedo->codrut TAG CrutProveedo

//


y luego cuando quiero usar la Dbf: asi mira::

//----------------------------Apertura de DBF -------------------------
If SELECT("Clientes")>0 //aqui comprueba si esta abierta
SELECT Clientes solo la seleccionas
Else
USE Clientes NEW ALIAS Clientes SHARED //aca si no esta abierta la
Endif abres
DATABASE oClientes //aca usas la clase Database q es muy buena
oClientes:SetOrder(1) //aca lo dices q orden de TAG quieres
oClientes:bBof:={||NIL}
oClientes:bEof:={||NIL}
oClientes:Gotop()
Mi segundo amor es Programar
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post by Miguel Rivera »

Hola:

Tu dices que siempre mantiene el primer indice del tag, pero en mi caso, cuando abro la base la abro con su archivo indice, pero al hacer mencion a esta base y hacer un Seek(), me da error y me dice que la base no esta indexada. Esa es mi duda, por lo que veo es como que cierra el archivo indice CDX.

Espero explicarme bien,

Saludos,

Miguel


A&C wrote:el orden del indice por defecto es el primero ,,,
pero si te mueves de TAG siempre debes mencionar que orden deceas usar

por eso: yo siempre lo uso asi...

Sabes yo hago esto :

1.- tengo una rutina independiente del programa que solo me crea los CDX

Asi::

#include "Ord.ch"
CLS
Dbcloseall()
//
USE CLIENTES NEW
INDEX ON Clientes->Rut TAG Rutcliente
INDEX ON Clientes->Razon TAG Razoncliente
INDEX ON Clientes->Saldo TAG Saldocliente
INDEX ON Clientes->tcate TAG Tcatecliente
INDEX ON Clientes->codcli TAG Codcliente
INDEX ON Clientes->codrut TAG Crutcliente

//
USE PROVEEDO NEW
INDEX ON Proveedo->Rut TAG RutProveedo
INDEX ON Proveedo->Razon TAG RazonProveedo
INDEX ON Proveedo->Saldo TAG SaldoProveedo
INDEX ON Proveedo->codpro TAG CodProveedo
INDEX ON Proveedo->codrut TAG CrutProveedo

//


y luego cuando quiero usar la Dbf: asi mira::

//----------------------------Apertura de DBF -------------------------
If SELECT("Clientes")>0 //aqui comprueba si esta abierta
SELECT Clientes solo la seleccionas
Else
USE Clientes NEW ALIAS Clientes SHARED //aca si no esta abierta la
Endif abres
DATABASE oClientes //aca usas la clase Database q es muy buena
oClientes:SetOrder(1) //aca lo dices q orden de TAG quieres
oClientes:bBof:={||NIL}
oClientes:bEof:={||NIL}
oClientes:Gotop()
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Pues va a ser que no....

Cuando tu abres un DBF indexado con CDX, el indice se abre automaticamente siemrpe y cuando tengo el mismo nombre que el DBF.

Hasta aqui todo bien....

Pero suscede que cuando el indice se abre NO SE ABRE EN EL PRIMER TAG, sino en el ORDEN "0", es decir, el orden natural, como si no estuviera indexada.

Luego entonces tienes que hacer un ORDSETFOCUS(<tag>) antes de hacer un SEEK, si no te va marcar que la base de datos no esta indexada, lo cual es cierto, porque esta apuntado al orden natural.
Saludos
R.F.
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post by Miguel Rivera »

Rene:

Me queda super claro, muchas gracias por tu ayuda.

Saludos,

Miguel Rivera

RF wrote:Pues va a ser que no....

Cuando tu abres un DBF indexado con CDX, el indice se abre automaticamente siemrpe y cuando tengo el mismo nombre que el DBF.

Hasta aqui todo bien....

Pero suscede que cuando el indice se abre NO SE ABRE EN EL PRIMER TAG, sino en el ORDEN "0", es decir, el orden natural, como si no estuviera indexada.

Luego entonces tienes que hacer un ORDSETFOCUS(<tag>) antes de hacer un SEEK, si no te va marcar que la base de datos no esta indexada, lo cual es cierto, porque esta apuntado al orden natural.
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Yo tuve el mismo problema y resulta que aunque se supone que el primer indice se coge por defecto (una vez abierto con USE o SET INDEX), pues no es así, y tienes que emplear Alias->( OrdSetFocus( nº indice/"nombre indice" ) ) SIEMPRE.

Por cierto, no te olvides de incluir MPAR.OBJ en la lista de objetos de tu LNK.

Suerte.
Nos Gusta Programar
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post by Miguel Rivera »

Hola maruramos:

Me queda muy claro tu explicacion.

Muchas gracias,

Saludos,

Miguel
manuramos wrote:Yo tuve el mismo problema y resulta que aunque se supone que el primer indice se coge por defecto (una vez abierto con USE o SET INDEX), pues no es así, y tienes que emplear Alias->( OrdSetFocus( nº indice/"nombre indice" ) ) SIEMPRE.

Por cierto, no te olvides de incluir MPAR.OBJ en la lista de objetos de tu LNK.

Suerte.
Post Reply