Error que no entiendo por que sucede.

Post Reply
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Error que no entiendo por que sucede.

Post by José Camilo »

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
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Error que no entiendo por que sucede.

Post by karinha »

Code: Select all | Expand


// \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
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Re: Error que no entiendo por que sucede.

Post by José Camilo »

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
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Error que no entiendo por que sucede.

Post by cnavarro »

Después de los USE y antes del GOTOP ( en el codigo inicial que pusiste ), prueba a poner

Code: Select all | Expand


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
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Error que no entiendo por que sucede.

Post by karinha »

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
artu01
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Error que no entiendo por que sucede.

Post by artu01 »

Y si pruebas asi:

Code: Select all | Expand


@ 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
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Error que no entiendo por que sucede.

Post by nageswaragunupudi »

Code: Select all | Expand


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
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Re: Error que no entiendo por que sucede.

Post by José Camilo »

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.
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Error que no entiendo por que sucede.

Post by nageswaragunupudi »

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
Post Reply