Error que no entiendo por que sucede.

Error que no entiendo por que sucede.

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

Re: Error que no entiendo por que sucede.

Postby karinha » Thu Mar 10, 2022 11:14 pm

Code: Select all  Expand view  RUN

// \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
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Error que no entiendo por que sucede.

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

Re: Error que no entiendo por que sucede.

Postby cnavarro » Fri Mar 11, 2022 2:05 am

Después de los USE y antes del GOTOP ( en el codigo inicial que pusiste ), prueba a poner
Code: Select all  Expand view  RUN

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
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Error que no entiendo por que sucede.

Postby karinha » 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
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Error que no entiendo por que sucede.

Postby artu01 » Fri Mar 11, 2022 3:49 pm

Y si pruebas asi:
Code: Select all  Expand view  RUN

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

Re: Error que no entiendo por que sucede.

Postby nageswaragunupudi » Fri Mar 11, 2022 4:01 pm

Code: Select all  Expand view  RUN

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
User avatar
nageswaragunupudi
 
Posts: 10654
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Error que no entiendo por que sucede.

Postby José Camilo » Fri Mar 11, 2022 5: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.
José Camilo
 
Posts: 210
Joined: Wed Apr 07, 2021 3:56 pm

Re: Error que no entiendo por que sucede.

Postby nageswaragunupudi » Fri Mar 11, 2022 6: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
User avatar
nageswaragunupudi
 
Posts: 10654
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests