Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Obtener maximo valor de un campo en Access

De nuevo aquí en el foro, tengo un error que no le encuentro cura. Haber si me dan una solución.

Código Delphi [-]
with Query1 do
  begin
    SQL.Clear;
    Close;
    SQL.Text := 'Select max(codigo) as codigo from clientes';
    Open;
    Edit1.Text := FormatFloat('0000000', StrToFloat(FloatToStr(FieldByName('CODIGO').AsInteger +1)));
    Close;
    Active := False;
  end;
Este código funciona correctamente en Firebird, Posgresql que ya lo probe. Pero en Access me da error, no funciona ¿como puedo obtener el valor maximo de un campo en un base de datos .MDB de Access?. necesito una manito.
Responder Con Cita
  #2  
Antiguo 19-03-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por wilcg Ver Mensaje
Pero en Access me da error
¿Y el error es... ?
Responder Con Cita
  #3  
Antiguo 19-03-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La consulrta en si no parece tener nada raro.
Tal y como te han comentado, ¿Te da error? ¿No funciona? ¿No da nada?... ?¿?¿?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 19-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Y cambiaste la fuente de datos del query? osea en vez de especificar la conexión mysql, debes conectar con access.
Responder Con Cita
  #5  
Antiguo 19-03-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Gracias por su interés, les comento la conexión es correcta para Access la aplicacion guarda y modifica los registros de la base de datos, el problema surge cuando realizo esta consulta. y con respecto al error es este.
Responder Con Cita
  #6  
Antiguo 19-03-2015
nicolas77 nicolas77 is offline
Miembro
 
Registrado: may 2010
Ubicación: Mar del Plata, Bs As, Argentina
Posts: 15
Poder: 0
nicolas77 Va por buen camino
Código Delphi [-]
with Query1 do
begin
  SQL.Clear;
  Close;
  SQL.Text := 'Select max(codigo) as Maximo from clientes';
  Open;
  Edit1.Text := FormatFloat('0000000', StrToFloat(FloatToStr(FieldByName('CODIGO').AsInteger +1)));
  Close;
  Active := False;
end;
esto se puede arreglar:
Código Delphi [-]
  Edit1.Text := FormatFloat('0000000', StrToFloat(FloatToStr(FieldByName('CODIGO').AsInteger +1)));

Última edición por nlsgarcia fecha: 19-03-2015 a las 19:11:21. Razón: Formateo y Sintaxis Delphi
Responder Con Cita
  #7  
Antiguo 19-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Si intentas generar el id podria ser:

Código Delphi [-]
Select last_insert_id() from clientes

y le sumas 1.

Lo que veo raro es que si seleccionas el codigo "as maximo", lo que muestras en el edit es(el field) "maximo"; o codigo, etc..

Y fijate utilizando:

Código Delphi [-]
ExecSQL;
Responder Con Cita
  #8  
Antiguo 19-03-2015
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Llámame loco, pero parece ser que en access no dejará, intuyo, usar como alias el nombre de un campo que tenga la tabla.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #9  
Antiguo 20-03-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Cita:
Empezado por ozsWizzard Ver Mensaje
Llámame loco, pero parece ser que en access no dejará, intuyo, usar como alias el nombre de un campo que tenga la tabla.
Con todo los intentos que he realizado, parces tener razón. no encuentro la manera de solucionarlo, siempre me inventa un error este access, bueno seguiré investigando un poco mas, de lo contrario buscare otra solución.
Responder Con Cita
  #10  
Antiguo 20-03-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
En fin este Access si que me invento un montón de errores, no podía dar con lo deseado, pero lo que no sabia es que no me iba dar por vencido, y después de tanto aquí la solución para otro que lo desee. Yo uso UNIDAC y creo que en otros componentes es muy parecido.

PASO 1
en el UniQuery1, clic derecho y selecionar Fields Editor y crear un campo del tipo integer con el nombre en mi caso va ha ser MaxCodigo, y automaticamente se renombrara el campo UniQuery1MaxCodigo.

PASO 2
Crear la funcion
Código Delphi [-]
function TForm1l.ObtenerCodigo: Integer;
var
  NCodigo: Integer;
begin
  UniQuery1.Close;
  UniQuery1.DisableControls;
  UniQuery1.SQL.Text := 'select max( codigo ) as maxcodigo from clientes';
  UniQuery1.Open;
  UniQuery1.EnableControls;
  NCodigo := UniQuery1MaxCodigo.AsInteger; // aqui el nombre del campo
  if NCodigo = 0 then
    Result := 1000000001 // si esta en 0 indicamos de que numeracion queremos empezar
  else
    Result := NCodigo + 1;
end;

PASO 3
uso
Código Delphi [-]
Edit1.Text := IntToStr(ObtenerCodigo);

y listo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Valor maximo de un campo jafera Firebird e Interbase 4 25-10-2013 19:08:39
Obtener valor de Campo Calculado jhonalone Tablas planas 7 21-03-2011 17:10:17
Valor Maximo de un campo en un ttable johurgi Varios 1 16-04-2008 17:16:07
Como obtener subconsulta con un valor maximo alexander66 MS SQL Server 3 16-11-2006 03:38:20
Como obtener el maximo numero generado en campo autonumerico makinita C++ Builder 4 11-09-2006 11:14:50


La franja horaria es GMT +2. Ahora son las 06:12:09.


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