FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error que no entiendo por que sucede.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Error que no entiendo por que sucede.
Posted: Thu Mar 10, 2022 10:36 PM

Hola.
tengo una rutina muy simple que al ejecutarla da error base 1004 NIL:EVAL y me marca el error en la linea de armado del xbrowse como si no existiera la base CONSORC.
tengo otras rutinas exactamente iguales cambiando los nombres de los campos y las bases y funcionan perfecto.
NO LOGRO ENTENDER POR QUE DA ERROR. Si alguien lo entiende y me explica agradecere mucho.
esta es la funcion:
*-------------------------------------------------------------------------------------------------------------------------------------------------------------
*
*
*
function AbmConsor()
local napu
local aBotones := {}

local oDlg, oBrw, cAlias := cGetNewAlias( "CONSORC" )
local oBr, oFont

local aGrad := ;
{ ;
{ 0.5, RGB( 193, 182, 174 ), RGB( 237, 234, 109 ) }, ;
{ 0.5, RGB( 237, 234, 109 ), RGB( 185, 170, 164 ) } ;
}

local acampos := {|| {' '+str(Consorc->Consorcio,2)+' '+Consorc->Nombre+' '+Consorc->direccion } }
local lcampos := {|| ' '+str(Consorc->Consorcio,2)+' '+Consorc->Nombre+' '+Consorc->Direccion }
local atitcol := "Cod Nombre Domicilio"

Private oBar2
// imagen tooltip en boton en tooltip
aBotones := { {"User.bmp" ,"Agrego Registro " , "Agregar" , {|| editoCons(.t.),oBrw:SetFocus(),oBrw:refresh() },VK_INSERT,"<Insert>"},;
{"Borrar.bmp" ,"Borro Registro " , "Borrar" , {|| .t./(if(Borro(),dbdelete(),NIL),oBrw:SetFocus(),oBrw:refresh())/ },VK_DELETE,"<Delete>"},;
{"Editar.bmp" ,"Modifico Registro" , "Modificar" , {|| editoCons(.f.),oBrw:refresh(),oBrw:SetFocus() },VK_RETURN,"<Return>"},;
{"Ind1-9.bmp" ,"Orden por C贸digo " , "x C贸digo" , {|| (Consorc->(DbSetOrder(1)),oBrw:SetFocus(),oBrw:refresh(),oDlg:ctitle:='Consprcios ( Ordenado x C贸digo )',oDlg:Refresh()) },VK_C,"<C>" },;
{"IndA-Z.bmp" ,"Orden por Nombre " , "x Nombre" , {|| (Consorc->(DbSetOrder(2)),oBrw:SetFocus(),oBrw:refresh(),oDlg:ctitle:='Consorcios ( Ordenado x Nombre )',oDlg:Refresh()) },VK_N,"<N>" },;
{"Exit.bmp" ,"Sale de Browse " , "Salir" , {|| oDlg:end() },VK_ESCAPE,"<Escape>"} ;
}

SET DATE ITALIAN
SET CENTURY ON
XBrNumFormat( 'E', .t. )
SetBalloon( .t. )

dbcloseall()

use acciones index accione1 new
use consorc index consorc1, consorc2 new

GO TOP

DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE BRUSH oBr RESOURCE "beige2"

DEFINE DIALOG oDlg FROM 1, 1 TO 656, 1444 FONT oFont TITLE 'Consorcios' PIXEL

@ 4,5 XBROWSE oBrw ;
COLUMNS "Consorcio","Nombre","Direccion" ;
COLSIZES-10,-10,-10 OF oDlg ;
SIZE 712,289 PIXEL ;
JUSTIFY .T. ;
ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;
BACKGROUND aGrad VERTICAL

oBrw:nStretchCol := 2
oBrw:nRowHeight := 30
oBrw:nMarqueeStyle := 4

oBrw:bKeyDown:={|nKey,nFlag|iif(veo(@nApu,@oBrw,aBotones,nKey),eval(aBotones[nApu,4]),NIL)}
oBrw:bLDblClick := { |nRow,nCol,nKeyFlags|EditoCons(.f.),oBrw:Refresh()}

oBrw:CreateFromCode()

cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )

ACTIVATE DIALOG oDlg CENTERED on INIT BtnBarNew( oBrw, @oDlg, aBotones)

RELEASE BRUSH oBr
RELEASE FONT oFont

dbcloseall()
return nil
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Error que no entiendo por que sucede.
Posted: Thu Mar 10, 2022 11:14 PM
Code (fw): Select all Collapse
// \SAMPLES\CAMILO.PRG

#include "FiveWin.ch"

ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT

FUNCTION AbmConsor()

   LOCAL napu
   LOCAL aBotones := {}

   // LOCAL oDlg, oBrw, cAlias := cGetNewAlias( "CONSORC" )
   LOCAL oDlg, oBrw, cAlias := cGetNewAlias( "CUST" )  // TESTE
   LOCAL oBr, oFont

   LOCAL aGrad := ;
      { ;
      { 0.5, RGB( 193, 182, 174 ), RGB( 237, 234, 109 ) }, ;
      { 0.5, RGB( 237, 234, 109 ), RGB( 185, 170, 164 ) } ;
      }

   LOCAL acampos := {|| { ' ' + Str( Consorc->Consorcio, 2 ) + ' ' + Consorc->Nombre + ' ' + Consorc->direccion } }
   LOCAL lcampos := {|| ' ' + Str( Consorc->Consorcio, 2 ) + ' ' + Consorc->Nombre + ' ' + Consorc->Direccion }
   LOCAL atitcol := "Cod Nombre Domicilio"

   PRIVATE oBar2

   RDDSETDEFAULT("DBFCDX")

   // imagen tooltip en boton en tooltip

// aBotones := { { "User.bmp", "Agrego Registro ", "Agregar", {|| editoCons( .T. ), oBrw:SetFocus(), oBrw:refresh() }, VK_INSERT, "<Insert>" }, ;
//    { "Borrar.bmp", "Borro Registro ", "Borrar", {|| .T. /*(if(Borro(),dbdelete(),NIL),oBrw:SetFocus(),oBrw:refresh())*/ },VK_DELETE,"<Delete>"},;
//    { "Editar.bmp", "Modifico Registro", "Modificar", {|| editoCons( .F. ), oBrw:refresh(), oBrw:SetFocus() }, VK_RETURN, "<Return>" }, ;
//    { "Ind1-9.bmp", "Orden por C贸digo ", "x C贸digo", {|| ( Consorc->( dbSetOrder( 1 ) ), oBrw:SetFocus(), oBrw:refresh(), oDlg:ctitle := 'Consprcios ( Ordenado x C贸digo )', oDlg:Refresh() ) }, VK_C, "<C>" }, ;
//    { "IndA-Z.bmp", "Orden por Nombre ", "x Nombre", {|| ( Consorc->( dbSetOrder( 2 ) ), oBrw:SetFocus(), oBrw:refresh(), oDlg:ctitle := 'Consorcios ( Ordenado x Nombre )', oDlg:Refresh() ) }, VK_N, "<N>" }, ;
//    { "Exit.bmp", "Sale de Browse ", "Salir", {|| oDlg:end() }, VK_ESCAPE, "<Escape>" } ;
//    }
//

   SET DATE ITALIAN
   SET CENTURY ON

   XBrNumFormat( 'E', .T. )
   SetBalloon( .T. )

   // dbCloseAll()  //?? Porque?


// NO ME GUSTA ASI:
// USE acciones INDEX accione1 NEW

// USE ACCIONES NEW ALIAS (cAlias) SHARED VIA "DBFCDX"
// SET ORDER TO...

// USE consorc INDEX consorc1, consorc2 new

// USE CONSORC  NEW ALIAS (cAlias) SHARED VIA "DBFCDX"
// SET ORDER TO...
// SET INDEX... // NTX

   // SOLO PARA TESTES: FUNCIONA PERFECTO.
   USE CUSTOMER NEW ALIAS (cAlias) SHARED VIA "DBFCDX"
   SET ORDER TO TAG FIRST
   GO TOP

   DEFINE BRUSH oBr RESOURCE "beige2"

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, - 14 BOLD

   // DEFINE DIALOG oDlg FROM 1, 1 TO 656, 1444 FONT oFont TITLE 'Consorcios' PIXEL
   DEFINE DIALOG oDlg FROM 1, 1 TO 656, 850  FONT oFont TITLE 'Consorcios' PIXEL

   @ 4, 5 XBROWSE oBrw ;
      COLUMNS "Consorcio", "Nombre", "Direccion" ;
      COLSIZES - 10, - 10, - 10 OF oDlg ;
      SIZE 712, 289 PIXEL ;
      JUSTIFY .T., .F., .F. ;
      ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;
      BACKGROUND aGrad VERTICAL

   oBrw:nStretchCol := 2
   oBrw:nRowHeight := 30
   oBrw:nMarqueeStyle := 4

   // no tengo las funciones.
// oBrw:bKeyDown := {| nKey, nFlag | iif( veo( @nApu, @oBrw, aBotones, nKey ), Eval( aBotones[ nApu, 4 ] ), NIL ) }
// oBrw:bLDblClick := {| nRow, nCol, nKeyFlags | EditoCons( .F. ), oBrw:Refresh() }

   oBrw:CreateFromCode()

// cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )  //??

   ACTIVATE DIALOG oDlg CENTERED // ON INIT BtnBarNew( oBrw, @oDlg, aBotones )

   RELEASE BRUSH oBr
   RELEASE FONT oFont

   // dbCloseAll()  // ?? Porque?

RETURN NIL


Regards, saludos.
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 12:34 AM

Gracias por interesarte en mi problema.
- uso ntx
- el mismo fuente que envi茅 cambiando la base y los campos tambi茅n anda perfecto.
- al salir de la rutina cierro todas las bases y abro las que necesito al ingresar a cada rutina.
- las dem谩s funciones no llegan a intervenir antes del error.
reitero. es una funcion muy simple que arma un dialogo con un browse y unos botones para las acciones.
prove asi:
use consorc index consorc1, consorc2 new alias (cAlias) y sacando cAlias := cGetNewAlias( "CONSORC" ) y da el mismo error y si dejo los 2 me muestra el dialogo con el browse y fijate que pasa en este caso.:
si traigo los datos asi pasa bien :
variable campo
nconsorcio := consorcio
pero si coloco asi me da el mismo error:
variable campo
nconsorcio := consorc->consorcio

es algo muy simple pero no lo entiendo.

Gracias igual. abrazo

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 02:05 AM
Despu茅s de los USE y antes del GOTOP ( en el codigo inicial que pusiste ), prueba a poner
Code (fw): Select all Collapse
cAlias := cGetNewAlias( "CONSORC" )

y dime si se soluciona: evidentemente a partir de ah铆 usa ( cAlias )->( .... ), al igual que en el xbrowse tambi茅n usas cAlias
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 10:59 AM
Bu茅n dia. 脡s posible enviar completo con los .DBFs via .ZIP? E todas las funciones de esta FUNCTION?

Se si, post aqui:

https://mega.nz/

Y que version de FiveWin usas?

Gracias,

Regards, saludos.
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 400
Joined: Fri May 11, 2007 08:20 PM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 03:49 PM
Y si pruebas asi:
Code (fw): Select all Collapse
@ 4,5 XBROWSE oBrw ;
COLUMNS "Consorcio","Nombre","Direccion" ;
COLSIZES-10,-10,-10 OF oDlg ;
SIZE 712,289 PIXEL ;
JUSTIFY .T. ;
DATASOURCE 聽"consorc" AUTOSORT FOOTERS LINES CELL NOBORDER ;
BACKGROUND aGrad VERTICAL
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 04:01 PM
Code (fw): Select all Collapse
cAlias := cGetNewAlias( "CONSORC" )

cAlias need not be "CONSORC". It can be "CONSORT001" or "CONSORT002", etc.
So please do not use CONSORC->fieldname.
Instead use (cAlias)->fieldname.
Regards



G. N. Rao.

Hyderabad, India
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 05:47 PM

Hola. nuevamente gracias. hoy detecte que el problema es que la funci贸n cAlias := cGetNewAlias( "CONSORC" ) me devolv铆a como resultado CONSORC001 asi que prove con calias := left(calias,7) y a partir de all铆 santo remedio, revisando otras rutinas que hacen lo mismo siempre devuelve el nombre de la base, no se por que raz贸n esta vez devolv铆a con el agregado 001. muchas gracias nuevamente.

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Error que no entiendo por que sucede.
Posted: Fri Mar 11, 2022 06:41 PM

cGetNewAlias( "CONSORC" ) returns "CONSORC" if the alias "CONSORC" is not already in use.
If that alias is already in use, it returns "CONSORC001"
If both the aliases "CONSORC" and "CONSORC001" are already in use, it returns "CONSORC002".
This function always returns an alias name which is not already in use.

Regards



G. N. Rao.

Hyderabad, India

Continue the discussion