Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mayor Numero Paradox (https://www.clubdelphi.com/foros/showthread.php?t=60278)

lKinGl 26-09-2008 13:52:25

Mayor Numero Paradox
 
Salu2

tengo un campo en una tabla paradox que contiene un campo "num_veh" en este campo van registrada x cantidad

¿Quisierea saber como hago para buscar el número mas alto?
para sumarle 1 y no se repita

gracias adelantadas...

Caro 26-09-2008 14:00:13

Hola lKing, puedes hacer una consulta ordenando de mayor a menor y obtener el primer registro.

Código SQL [-]
 select First 1 * from tabla order by num_veh desc

Nose si en paradox habra First o Top, que te devuelve el primer registro de tu consulta.

Saluditos

eduarcol 26-09-2008 14:03:22

tambien se puede hacer (creo recordar que si) un MAX

Código SQL [-]
Select Max(num_veh) from latabla

lKinGl 26-09-2008 14:03:44

si pero ese código es mucho para lo que necesito, mira lo que necesito es que el campo "num_veh", se incremente... mas nada no necesito consulta sql ni nada tan complejo

lKinGl 26-09-2008 14:09:05

lo que quiero es hacer un algoritmo asi

Código Delphi [-]
var
numv:integer;
begin
  tabla.insert;
  numv:=mayornumero de la tabla+1;
  tabla.post;
end;

eduarcol 26-09-2008 14:10:57

Cita:

Empezado por lKinGl (Mensaje 316530)
si pero ese código es mucho para lo que necesito, mira lo que necesito es que el campo "num_veh", se incremente... mas nada no necesito consulta sql ni nada tan complejo

:eek: y cual es la parte compleja :confused:, lanzas el query obtienes el valor le sumas uno y listo... no veo otra manera

Caro 26-09-2008 14:17:54

Cita:

Empezado por eduarcol (Mensaje 316532)
lanzas el query obtienes el valor le sumas uno y listo... no veo otra manera

Eso mismo, solo que en vez de usar lo que te he puesto, utiliza Max como te indica Eduardo.

Saluditos

lKinGl 26-09-2008 14:23:23

estoy haciendo asi pero no me corre :S disculpen mi ignorancia

Código Delphi [-]
procedure TForm5.Button1Click(Sender: TObject);
var
buscar:string;
begin
buscar:='Select Max(num_veh) from vehiculos.db';
edit1.Text:=IntToStr(StrToInt(buscar)+1);
end;

Lepe 26-09-2008 14:23:29

Cita:

Empezado por lKinGl (Mensaje 316530)
si pero ese código es mucho para lo que necesito, mira lo que necesito es que el campo "num_veh", se incremente... mas nada no necesito consulta sql ni nada tan complejo

Pues si no necesitas consulta ni nada tan complejo, entonces busca otro camino y cuando lo encuentres, te diré los fallos que tiene.

Necesitas una consulta como bien han expuesto. Aquí una variante que ya te da el siguiente número:
Código SQL [-]
Select Max(num_veh)+1 from latabla

Aunque si quieres puedes usar table1.recordcount para averiguar la cantidad de registros que tiene una tabla, pero eso te dará duplicados en cuanto alguien borre un albaran, factura, cliente o lo que sea y quiera añadir uno nuevo. El BDE lanzará una excepción keyviol ... tú mismo.

saludos

lKinGl 26-09-2008 14:31:07

será que tengo que agregar un componente query?

:(:(:(:(:(:(

Caro 26-09-2008 14:33:00

Hola lking, entonces tienes problemas en obtener el resultado de tu consulta.
Código Delphi [-]
Query1.Active := False;
Query1.SQL.Text := 'Select Max(num_veh) +1 AS numero from vehiculos.db';
Query1.Active :=True;
NuevoNumero := Query1.FieldByName('numero').AsString;

Saluditos

Caro 26-09-2008 14:36:35

Cita:

Empezado por lKinGl (Mensaje 316539)
será que tengo que agregar un componente query?

Si lking, necesitas un query para ejecutar tu consulta, revisa lo que te puse en mi anterior mensaje.

Saluditos

lKinGl 26-09-2008 14:40:13

hola caro

ya lo revise y para probar el codigo que me facilitaste le puse la salida asi y nada no me muestra nada...

Código Delphi [-]
procedure TForm5.Button1Click(Sender: TObject);
var
nuevonumero:string;
begin
Query1.Active := False;
Query1.SQL.Text := 'Select Max(num_veh) +1 AS num_veh from vehiculos.db';
Query1.Active :=True;
NuevoNumero := Query1.FieldByName('num_veh').AsString;
edit1.Text:=nuevonumero;
end;

gracias por tu paciencia :(

Caro 26-09-2008 14:54:56

Hola de nuevo, tu campo num_veh es de tipo entero verdad si es así no deberías tener problemas al sumarle 1, has la prueba cambiando el nombre del alias y has la prueba también solo con el max sin sumarle el 1.

Código Delphi [-]
Query1.Active := False;
Query1.SQL.Text := 'Select Max(num_veh) +1 AS numero from vehiculos.db';
Query1.Active :=True;
NuevoNumero := Query1.FieldByName('numero').AsString;

Saluditos

lKinGl 26-09-2008 15:01:16

antes habia hecho algunas consultas sql y pude notar que en la actual no tengo este codigo

Código Delphi [-]
Query1.DatabaseName:=ExtractFilePath(Application.ExeName)+'Data';

estemmmm le puse +'Data' por que la tabla vehiculos.db esta dentro de una carpeta llamada data

otra cosita...

lKinGl 26-09-2008 15:03:04

y si...el campo num_veh es entero y hay un registro que tiene 0 para que cuando el codigo me funcione me arroje 1

lKinGl 26-09-2008 15:06:20

:eek: ya funcionó y no se que hice :(

¿alguien podria explicar?

lKinGl 26-09-2008 15:19:02

muchas gracias caro por tu ayuda tu siempre tan oportuna :)

coso 26-09-2008 16:13:11

Hola, usar querys es lo mas (mucho mas) recomendable. Solo añado esto para mostrar que tambien se puede hacer mediante unicamente tablas.

Código Delphi [-]
 
 Tabla.IndexFieldNames := 'num_veh';
 Tabla.Last;
 num_veh := Tabla.FieldByName('num_veg').Asinteger;
 inc(num_veh);
 ...

roman 26-09-2008 16:43:40

¿Y no se puede usar un campo autoinc y dejar que paradox haga todo?

// Saludos


La franja horaria es GMT +2. Ahora son las 01:23:48.

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