Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   comparar do tedit.text (https://www.clubdelphi.com/foros/showthread.php?t=69870)

gonza_619 14-09-2010 21:13:36

comparar do tedit.text
 
hola amigos bueno miren tengo 2 edit.text y hago lo sig

if edit1.text>edit2.text then
showmessage 'es menor'

pero no me lo compara como podria hacer?

Caral 14-09-2010 21:16:54

Hola
Pues no veo el problema, salvo los parentesis hace la comparacion:
Código Delphi [-]
if edit1.text > edit2.text then
  showmessage('es menor');
Saludos

gonza_619 14-09-2010 21:19:50

bien el codigo es el sig:

Código Delphi [-]
query1.SQL.Clear;
Query1.sql.text:= 'Select sum(importe) as Monto from cobranzas where alucurso ='+IntToStr( x ) ;
query1.Active:=true;
Edit2.Text:= Query1.FieldByName('Monto').asstring;

//edit4.text:=floattostr(strtofloat(edit2.Text)+ StrToFloat(dbedit4.Text));
f:= StringReplace(dbedit12.Text, '$', '', [rfReplaceAll]);
g:= StringReplace(dbedit10.Text, '$', '', [rfReplaceAll]);
h:= FloatToStr(StrToFloat(f) + StrToFloat(g));
edit3.Text:=h;
if edit2.text < edit3.text then
showmessage('todavia debe cuotas');

me da todo bien menos la comparacion ya q no me tira el mensaje saludos

Caral 14-09-2010 21:24:06

Hola
La pregunta que se me ocurre es:
El Edit2 carga el dato de la tabla, este dato, segun entiendo viene acompañado del signo de $ ????
Si es asi, el edit 3 no lo tiene, por ende la comparacion la hace pero nunca hara la operacion.
Me equivoco?
Saludos

Caral 14-09-2010 21:32:44

Hola
Código Delphi [-]
query1.SQL.Clear;
Query1.sql.text:= 'Select sum(importe) as Monto from cobranzas where alucurso ='+IntToStr( x ) ;
query1.Active:=true;
Edit2.Text:= StringReplace(Query1.FieldByName('Monto').asstring, '$', '', [rfReplaceAll]);

f:= StringReplace(dbedit12.Text, '$', '', [rfReplaceAll]);
g:= StringReplace(dbedit10.Text, '$', '', [rfReplaceAll]);
edit3.Text:= FloatToStr(StrToFloat(f) + StrToFloat(g));

if edit2.text < edit3.text then
showmessage('todavia debe cuotas');
Saludos

Delphius 14-09-2010 21:35:48

¿Puedo preguntar el porqué de comparar texto si lo que se busca comparar números? :confused:

A mi modo de ver se están haciendo conversiones innecesarias. Directamente que se comparen números y no estar convirtiendo de un tipo a otro.

Saludos,

gonza_619 14-09-2010 21:36:44

recien lo probe pero tampoco me tira el mensaje perdon por no se mas extenso pero nose porq la razon de no hacer la operacion
bien probare pasarlo a integer

Caral 14-09-2010 21:40:39

Hola
Sigo insistiendo con la pregunta:
El edit2 muestra el dato con el signo de Dolares ($) ????.
El edit3 veo que no, pero lo tiene?.
Saludos
PD: Delphius: Me imagino que hace la comparacion en los edit ya que es ahi donde se muestran los datos.

egostar 14-09-2010 21:45:12

Cita:

Empezado por gonza_619 (Mensaje 376436)
recien lo probe pero tampoco me tira el mensaje perdon por no se mas extenso pero nose porq la razon de no hacer la operacion
bien probare pasarlo a integer


Esto es simple, las cadenas se ordenan de esta forma:

'1 '
'10'
'2 '
'3 '
'4 '

Y si tuvieras esto:

edit2.text = '2 '
edit3.text = '10'

Al hacer la comparación, lo hace correctamente ya que '2 ' NO es menor a '10'

Como te dice Delphius, usa mejor campos numericos.

Salud OS

gonza_619 14-09-2010 21:45:57

los edits no muestran el signo pesos gracias
tendria que sumarlos en $ pero no se si se puede
h:= FloatToStr(StrToFloat(f) + StrToFloat(g));
esta operacion funciona pero lo q tendria hacer es comparar
con el edit2 y ahi ya no funciona, es decir los flotantes los suma, tendria hacer
w:=float tostr(edit2.text)?

Caral 14-09-2010 21:56:51

Hola
Como te han dicho, la mejor manera es cambiar el dato de string a float.
Simplemente:
Código Delphi [-]
var a,b: real;
begin
query1.SQL.Clear;
Query1.sql.text:= 'Select sum(importe) as Monto from cobranzas where alucurso ='+IntToStr( x ) ;
query1.Active:=true;
Edit2.Text:= Query1.FieldByName('Monto').asstring;

f:= StringReplace(dbedit12.Text, '$', '', [rfReplaceAll]);
g:= StringReplace(dbedit10.Text, '$', '', [rfReplaceAll]);
edit3.Text:= FloatToStr(StrToFloat(f) + StrToFloat(g));

a:= StrToFloat(edit2.text);
b:= StrToFloat(edit3.text);

if a < b then
showmessage('todavia debe cuotas');
Saludos

gonza_619 14-09-2010 22:02:33

bueno muchas gracais a todos , ahora si hizo la comparacion gracias de verdad, igualmenete segire preguntando espero le sirva a lguien mas saluudos

Caral 14-09-2010 22:07:29

Hola
Pues a mi me sirvio la lección de mi amigo Egostar, no sabia que las cadenas venían asi:
Cita:

'1 '
'10'
'2 '
'3 '
'4 '
Hice la prueba (como buen escéptico :D) y efectivamente.
Pero siempre digo; Delphi es tan bueno que ayuda en todo.;)
Saludos

Casimiro Noteví 14-09-2010 22:55:48

Es que en caso de caracteres el orden es el de la tabla ascii:

Cita:

!"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Los números van primero, luego las letras mayúsculas y después las letras minúsculas.

ecfisa 14-09-2010 23:18:03

Es por lo comentado por egostar, que desde la epoca del TP y del BC++, me quedó la costumbre de rellenar los códigos con ceros a la izquierda para evitar esos 'desordenes' numéricos...

A por por cierto, acertada observación la de Delphius.

Saludos. :)

gonza_619 14-09-2010 23:18:30

bien ahora el problema es que el campo "ctrlconcepto" es integer y en esta parte de asignacion max:= Query1.FieldByName('maximo').AsString
no permite integer sino .string y .value. se que si lo denomino .value ahi que pasarlo al tipo q quiero. como seria?

Código Delphi [-]
query1.SQL.Clear;
query1.sql.text:= 'Select max(ctrlconcepto) as maximo from cobranzas where alucurso =IntToStr( x ) and concepto=IntToStr(dbedit9.text)' ;
query1.Active:=true;
max:= Query1.FieldByName('maximo').AsString;

asi como esta me tira error supongo porq max es integer, bien lo declare integer

max:= inttostr(query1.fieldbyname('maximo').value);

digo ya que el campo "maximo" es integer

Caral 14-09-2010 23:26:08

Hola
Código Delphi [-]
query1.SQL.Clear;
query1.sql.text:= 'Select max(ctrlconcepto) as maximo from cobranzas where alucurso =  '+ IntToStr( x )+'  and concepto = '+ IntToStr(dbedit9.text) ;
query1.Active:=true;
max:= Query1.FieldByName('maximo').Value;
Saludos

gonza_619 14-09-2010 23:32:24

me tira error de capability not suported.
que qiere decir cuando pongo al final .value?
quizas sea algo en la consulta pero el error me lo marca en la asignacion al MAX
no me tira error en la ocnsulta:
Código Delphi [-]
query1.sql.text:= 'Select max(ctrlconcepto) as maximo from cobranzas  where alucurso =IntToStr( x ) and concepto=IntToStr(dbedit9.text)' ;

Caral 14-09-2010 23:43:30

Hola
La variable max que es ????
Saludos

gonza_619 14-09-2010 23:51:09

la variable max es integer pero al parecer es en la cinsulta de esta manera funciona

Código Delphi [-]
query1.sql.text:= 'Select max(ctrlconcepto) as maximo from cobranzas where alucurso ='+IntToStr( x )

pero al tomar 2 campos como referencia ya no, es que el otro cmapo necesito agregarlo depues ese campo es tambien integer, sino tendre que pasarlo a un variable X como hice antes

strtoint(dbedit11.text)

Código Delphi [-]
query1.sql.text:= 'Select max(ctrlconcepto) as maximo from cobranzas where alucurso ='+IntToStr( x )  and conceptoctrl = strtoint(dbedit11.text)
aca nose si esta bien


La franja horaria es GMT +2. Ahora son las 10:23:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi