Error que no entiendo por que sucede.
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Error que no entiendo por que sucede.
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
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
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
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
- 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.
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
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Error que no entiendo por que sucede.
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
- 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
Re: Error que no entiendo por que sucede.
Después de los USE y antes del GOTOP ( en el codigo inicial que pusiste ), prueba a poner
y dime si se soluciona: evidentemente a partir de ahí usa ( cAlias )->( .... ), al igual que en el xbrowse también usas cAlias
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
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
- 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.
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.
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
Re: Error que no entiendo por que sucede.
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
- 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.
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
G. N. Rao.
Hyderabad, India
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Error que no entiendo por que sucede.
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.
- 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.
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.
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
G. N. Rao.
Hyderabad, India