Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Mostrar el Número de CLiente en un Mantenimiento

Buenas tardes amigos espero que estén muy bien

El motivo de este mensaje es porque necesito que en un Mantenimiento de Clientes cuando el usuario hace clic en el botón "Nuevo"
inmediatamente en el formulario en el Campo número de cliente (No.) aparezca cual es el numero que se le ha asignado al cliente que se esta creando.

Utilizo Delphi 7 y Sql Server Express

En el evento OnCLic del Botón Nuevo tengo el Siguiente Codigo: TClientes.Insert;

La Estructura de la Tabla es la Siguiente:

CREATE TABLE [dbo].[Clientes](
[No] [int] IDENTITY(1,1) NOT NULL,
[Nombre] [nvarchar](50) NOT NULL,
[Nombre 2] [nvarchar](50) NULL,
[Direccion] [nvarchar](50) NOT NULL,
[Contacto] [nvarchar](50) NULL,
[Telefono] [nvarchar](15) NULL,
[Fax] [nvarchar](15) NULL,
[Tel_Movil] [nvarchar](15) NULL,
[Tel_Oficina] [nvarchar](15) NULL,
[E-Mail] [nvarchar](100) NULL,
[Pagina_Web] [nvarchar](100) NULL,
[Limite_Credito] [decimal](38, 2) NOT NULL,
[Pais] [int] NOT NULL,
[Ciudad] [int] NOT NULL,
[Estado] [nvarchar](8) NOT NULL,
[Fecha_ult_modificación] [date] NOT NULL,
[RNC] [nvarchar](20) NULL,
[Grupo_Contable_Cliente] [nvarchar](20) NOT NULL,
[Usuario] [nvarchar](20) NULL,
[Fecha_Cumpleaño] [datetime] NULL,
CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED


Muchas Gracias de antemano por la Ayuda que puedan Brindarme.

Última edición por hondaalberto fecha: 27-02-2012 a las 20:23:35. Razón: Me Falto Incluir Información en el mensaje.
Responder Con Cita
  #2  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
Query1.Sql.text:= 'Select Nombre form Clientes';
Query1.Open;
Edit1.text:= (query1.Fields[0].Text);
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola hondaalberto.

Por favor, si tu mensaje incluye código, utilizá TAG's para que sea más legible:



Saludos y gracias por tu colaboración.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 27-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Con la Respuesta que Caral me escribio me muestra el primer cliente creado en la base de datos y lo que necesito mostrar es el número que le corresponde al cliente que estan creando.

Gracias de antemano...
Responder Con Cita
  #5  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
Query1.Sql.text:= 'Select Max(No) form Clientes';
Query1.Open;
Edit1.text:= IntToStr(query1.Fields[0].asinteger);
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 27-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Probé haciéndolo así utilizando la función max (no.) de Sql, pero lo que me muestra es el último cliente que se creo y lo que necesito hacer es lo siguiente:

Ej.: Tengo dos clientes ya creados en la Base de datos Cliente 1 y Cliente 2 cuando el usuario hace clic en el botón nuevo para crear el cliente numero 3 se debería mostrar que es el cliente No. 3 que es lo que no me sale con el código que me mostraste caral.
Responder Con Cita
  #7  
Antiguo 27-02-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Pues es tan simple como sumar 1...

Código SQL [-]
Query1.Sql.text:= 'Select Max(No) form Clientes';
Query1.Open;
Edit1.text:= IntToStr(query1.Fields[0].asinteger + 1);
Responder Con Cita
  #8  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Si, y como otra alternativa, también debería funcionar:
Código SQL [-]
SELECT MAX(NO)+1 FROM CLIENTES

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
O Tambien.....
Código Delphi [-]
Var Caral: Integer;
Begin
 Caral := 1;
Query1.Sql.text:= 'Select Max(No)+'+Caral+' form Clientes';
Query1.Open;
Edit1.text:= IntToStr(query1.Fields[0].asinteger);

Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Me encanta este código:
Código Delphi [-]
   Query1.Sql.text:= 'Select Max(No)+'+Caral+' form Clientes';
Está cargado de sincera humildad
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Venga hombre que ahora le generara un error:
Cita:
El código (novato) no se puede ejecutar,
A la variable Caral le falta experiencia.

Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
No seas modesto mi amigo, al menos para mi, la sentencia:
Código Delphi [-]
  Caral:= 1;
Funciona de maravilla

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por lo menos lo que le demuestra al amigo hondaalberto es que con delphi se puede hacer lo mismo de muchas maneras, eso es lo que me encanta de este lenguaje, nunca se termina de aprender algo mejor.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #14  
Antiguo 27-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Ok, Con esto si me da el número de cliente 3 pero si varios usuarios al mismo tiempo intentan crear un cliente le mostrara el número 3 a todos, como se podria corregir eso.
Responder Con Cita
  #15  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola hondaalberto.

Revisá este enlace: Creacion de un campo clave interno autonumerico

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo 27-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tambien:
Código Delphi [-]
procedure TFOrdProd.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  Query1.Sql.text:= 'Select Max(No) form Clientes';
  Query1.Open;
  If Edit1.Text = IntToStr(Query.Fields[0].asinteger) then
  begin
  if MessageBox(Handle,
                PChar('Esta tratando de poner un numero que ya existe' + #13#10 +
                      'Desea cambiarlo ?'),
                PChar('Numero Repetido'),
                MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1 + MB_APPLMODAL) = IDOK then
  begin
  Query1.Sql.text:= 'Select Max(No) form Clientes';
  Query1.Open;
  Edit1.Text = IntToStr(Query.Fields[0].asinteger+1);
  end;
  end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 27-02-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Bien... ahora si estamos pensando en una aplicación multipuesto...
Eso se resuelve de dos maneras posibles:
- Dejas el nro. de cliente = 0 y dejas que los triggers de la tabla se encarguen.
- Estableces el nro de cliente justo antes de grabar el registro
Código Delphi [-]
OnBeforePost
begin
    Query.SELECT MAX(CLIENTE)+1 FROM CLIENTES
    Tabla.FieldByName('NRO_CLIENTE') = Query.FieldBeName('MAX')
end;
Responder Con Cita
  #18  
Antiguo 27-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Buenas tardes DuilioIsola

Con el Código que me pusiste hice lo siguiente en el evento beforePost de la Tabla clientes:

Código Delphi [-]
begin
Query1.sql.add ( 'SELECT MAX(CLIENTE)+1 FROM CLIENTES');
Query1.Open;
TClientes.FieldByName('No').asinteger := Query1.FieldByName('MAX');

end;

y me devuelve el siguiente error:
[Error] UMantClientes.pas(254): Incompatible types: 'Integer' and 'TField'
[Fatal Error] RetailPos.dpr(18): Could not compile used unit 'UMantClientes.pas'
Responder Con Cita
  #19  
Antiguo 27-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Código Delphi [-]
TClientes.FieldByName('No').asinteger := Query1.FieldByName('MAX').????? ; // (AsInteger)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Mostrar el numero total de caracteres en un string creus OOP 5 14-11-2006 23:32:16
¿existe alguna propiedad en TRichedit que permita mostrar el número de cada línea? nuri Varios 1 06-04-2006 13:58:17
Mostrar numero de fila DBGrid danielcordovahe Varios 2 20-09-2005 01:00:21
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19
Como evito que salga el Numero de Excepcion al mostrar la Misma IcebergDelphi Firebird e Interbase 1 15-07-2003 15:54:39


La franja horaria es GMT +2. Ahora son las 19:01:17.


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