PDA

Ver la Versión Completa : asignacion de un valor a un dbedit


elpezfuma
08-07-2003, 18:47:30
estoy trabajando con un listtree como un catalogo y segun la line que presione le asigno un valor en otro formulario a un dbedit pero tengo que condicionar la linea aqui les pongo el codigo y los errores no esta terminado pero lo estoy probando y me da errores que desconosco

With Datamodule1 do
If (Tarticulo.State in [dsinsert,dsEdit]) then
begin
Tarticulo.Edit;
tira:= Listacla.Selected.AbsoluteIndex;
nodo:= Listacla.Selected.Text;
Str (tira,nodo1);
Label1.Caption := nodo1 ;
Fbienes.Labelclasificacion.Caption:= nodo;

bienes.DBEditgrupo.DataSource.DataSet.FieldByName(Fbienes.DBEditgrupo.Text).Asstring := '2'

* If tira < 20 then
Fbienes.DBEditsub.DataSource.DataSet.FieldByName(Fbienes.DBEditsub.Text).Asstring := '01'
else
if (tira > 21) and (tira<49)
Then
** Fbienes.DBEditsub.DataSource.DataSet.FieldByName(Fbienes.DBEditsub.Text).Asstring := '02';
{else
if tira < }
end
else
begin
MessageDlg('Debe abrir un nuevo registro antes de insertar los datos',mterror,[mbok],0);
Abort;
end;
* da el siguiente error: Missing operator or semicolon
** da el siguiente error: Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'

Lepe
08-07-2003, 19:04:44
Pues yo veo 3 fallos :D

bienes.DBEditgrupo.DataSource.DataSet.FieldByName(Fbienes.DBEditgrupo.Text).Asstring := '2'


1º - El inicio de la linea no seria: F[/]bienes.DBEditgrupo.....


2º - Justo al final de esa misma linea te falta el punto y coma que te pide.


if (tira > 21) and (tira<49)
Then
** Fbienes.DBEditsub.DataSource.DataSet.FieldByName(Fbienes.DBEditsub.Text).Asstring := '02';
{else
if tira < }
end [b]<------------3º - este end sobra de momento
else
begin
MessageDlg('Debe abrir un nuevo registro antes de insertar los datos',mterror,[mbok],0);
Abort;
end;

Lepe
08-07-2003, 19:10:08
Pues yo veo 3 fallos

bienes.DBEditgrupo.DataSource.DataSet.FieldByName(Fbienes.DBEditgrupo.Text).Asstring := '2'


1º - El inicio de la linea no seria: Fbienes.DBEditgrupo.....


2º - Justo al final de esa misma linea te falta el punto y coma que te pide.


if (tira > 21) and (tira<49)
Then
** Fbienes.DBEditsub.DataSource.DataSet.FieldByName(Fbienes.DBEditsub.Text).Asstring := '02';
{else
if tira < }
end <------------3º - este end sobra de momento
else
begin
MessageDlg('Debe abrir un nuevo registro antes de insertar los datos',mterror,[mbok],0);
Abort;
end;


Perdona por el mensaje anterior, jejeje, me comí algunos de los códigos de teclado, es que no me gusta nada andar con el raton y el teclado, así que subrayo y uso las negritas escribiendo sus códigos ;)

elpezfuma
09-07-2003, 17:38:11
lo que me gustaria saber es sobre los errores que me arroja el mismo delphi que puse al final de la pagina del hilo pero muchas gracias por las correcciones.

Lepe
09-07-2003, 18:30:43
ahhhh, perdona entonces, como ya viste tenia prisa :D


* Missing operator or semicolon Traducido resulta : Falta operador o el caracter punto y coma ";". Normalmente el error es porque falta el punto y coma en la linea anterior a donde indica el fallo. Tambien por que falte un operador entre una o varias expresiones, vamos que falta: 'and' 'or' '<' '<=' '>' '>=' . Aunque confieso que en el 99% de los casos es el punto y coma que siempre me lo como con patatas.

** da el siguiente error: Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter' que traducido resulta: Tipos incompatibles: Tira de caracteres y procedimiento, puntero a tipo de datos no definido, o parametro de tipo desconocido.

Éste fallo normalmente es porque ha encontrado un end que no se corresponde con ningun begin de los if, while, for ... y entonces lo interpreta como que el procedimiento ha acabado.

procedure Mio ;
begin
if 3>2 then
showmessage('si');
end; <<<< Aqui interpreta que el procedimiento Mio ha acabado
showmessage('pos yo que se.....'); al leer esta linea, no sabe a que procedimiento o funcion pertenece ese código

end;



Tambien suele dar ese mismo error cuando a una funcion le pasas un valor que no se corresponde con el que espera:

procedure Mio ( x:integer):Boolean;


y la llamas de la forma :

Mio ( '3' );

Como ya supones, ahora te dirá:
Incompatible types: 'String' and 'Integer'


Saludos