Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2012
borlandpablo borlandpablo is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 37
Poder: 0
borlandpablo Va por buen camino
Question Funcion?

Buenas a todos, soy nuevo en este foro. Alguien sabe como es la funcion que te dice el ID o el codigo de una fila registrada en una base de datos? Me explico, en un ComboBox tengo una lista de los nombres de distribuidores, y cuando lo seleccione quiero saber el ID o codigo de ese distribuidor.

Un saludo.
Responder Con Cita
  #2  
Antiguo 16-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Por favor, recuerda poner títulos descriptivos a tus preguntas, gracias.
Responder Con Cita
  #3  
Antiguo 16-10-2012
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.282
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
¿Exactamente qué componente estás utilizando? ¿TComboBox, TDBComboBox,..?
Aunque son parecidos no son iguales.

Si es un TComboBox, como comentas ¿cómo has rellenado los valores? Si has rellenado los valores con una SQL, tendrás que recuperar el valor del ID con una SQL.

Das poca información para saber cómo estás haciendo las cosas...
__________________
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 16-10-2012
borlandpablo borlandpablo is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 37
Poder: 0
borlandpablo Va por buen camino
Si, ya lo leí hace tiempo, porque me metía de vez en cuando para consultar en vuestro foro

No sabía qué poner en el título...

Un saludo.
Responder Con Cita
  #5  
Antiguo 16-10-2012
borlandpablo borlandpablo is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 37
Poder: 0
borlandpablo Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
¿Exactamente qué componente estás utilizando? ¿TComboBox, TDBComboBox,..?
Aunque son parecidos no son iguales.

Si es un TComboBox, como comentas ¿cómo has rellenado los valores? Si has rellenado los valores con una SQL, tendrás que recuperar el valor del ID con una SQL.

Das poca información para saber cómo estás haciendo las cosas...
Es un TComboBox, lo rhice con un Query, y en el evento OnShow del formulario hice un while. Mi intención era recuperar el ID con una sentencia SQL, pero no sé como meterlo en una variable entera. Creo recordar, que también se podía averiguar con una función, no sé si con un TComboBox o un DBComboBox. Gracias por la respuesta.

Un saludo.
Responder Con Cita
  #6  
Antiguo 16-10-2012
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.282
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
Cita:
Empezado por borlandpablo Ver Mensaje
Es un TComboBox, lo rhice con un Query, y en el evento OnShow del formulario hice un while. Mi intención era recuperar el ID con una sentencia SQL, pero no sé como meterlo en una variable entera. Creo recordar, que también se podía averiguar con una función, no sé si con un TComboBox o un DBComboBox. Gracias por la respuesta.
Pues entonces ya has hecho lo más complejo.
Si ya has hecho una sentencia SQL para recuperar todos los nombres, debes hacer una similar para recuperar el ID o el código.

Habrás hecho algo similar a esto:

Código SQL [-]
  Select * from Tabla

o
Código SQL [-]
Select NOMBRE FROM TABLA

Una vez que seleccionen un nombre en el ComboBox, para obtener el ID o el Código deberás hacer una similar a esta:

Código SQL [-]
SELECT CODIGO,ID >from TABLA where Nombre = [Nombre]

Eso en Delphi será algo así:

Código Delphi [-]
var
  StrSQL, Str:String;
begin

  ...
  Str := ComboxBox.Text;
  // o Este
  Str := ComboBox.Items[ComboBox.ItemIndex];
  // en Str está el nombre
  StrSQl := 'SELECT CODIGO,ID FROM TABLA WHERE NOMBRE =' + QuotedStr(Str);
  // el valor nombre debe ir entre comillas, por eso usamos QuotedStr
  ...

  // Si lanzas la consulta con el componente query1, para recuperar los valores sería...
  cod := query1.FieldByName('Codigo').AsInteger;
  ID := query1.FieldByName('Codigo').AsString;

  ...
__________________
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
  #7  
Antiguo 17-10-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.

Un DBLookupComboBox tampoco sería mala elección. Pero, si como mencionas en el mensaje #5, ya recorres la consulta para almacenar los datos obtenidos en el ComboBox, otra alternativa podría ser:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  tuQuery.Close;
  tuQuery.SQL.Text:= 'SELECT CAMPO_A_MOSTRAR, ID FROM TU_TABLA';
  tuQuery.Open;
  while not tuQuery.Eof do
  begin
    ComboBox1.Items.AddObject(tuQuery.FieldByName('CAMPO_A_MOSTRAR').AsString,
      TObject(tuQuery.FieldByName('ID').AsInteger));
    tuQuery.Next;
  end;
  tuQuery.First;
end;

Obtener el ID, ejemplo:
Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
var
  Id: Integer;
begin
  Id := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); // valor del campo ID correspondiente a la selección
  Caption := IntToStr(Id); // hacer algo con Id...
  ...
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 17-10-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 de nuevo.

Recién me percato de que estamos en el foro C++ Builder...

Entonces sería:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender) {
  tuQuery->Close();
  tuQuery->SQL->Text = "SELECT CAMPO_A_MOSTRAR, ID FROM TU_TABLA";
  tuQuery->Open();
  while (!tuQuery->Eof){
    ComboBox1->Items->AddObject(tuQuery->FieldByName("CAMPO_A_MOSTRAR")->AsString,
      (TObject*)tuQuery->FieldByName("ID")->AsInteger);
    tuQuery->Next();
  }
  tuQuery->First();
}
Obtener el ID:
Código:
void __fastcall TForm1::ComboBox1Change(TObject *Sender) {
  int Id = Integer(ComboBox1->Items->Objects[ComboBox1->ItemIndex]);
  Caption = IntToStr(Id);
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 18-10-2012
borlandpablo borlandpablo is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 37
Poder: 0
borlandpablo Va por buen camino
Muchísimas gracias, ya sé como funciona. El problema que tengo ahora es que cuando obtengo el ID de la tabla principal, no me dejarlo insertarlo en otra tabla con la clave ajena. Lo detallo mejor:

Código:
DISTRIBUIDOR                        CATALOGOS                                    TIENDAS
distribuidor_id (autonumérico)   catalogo_id(autonumérico)                  tienda_id            
Nombre                           Titulo                                     Nombre
Telefono                         Foto                                       Logo
Logo                             fecha_inicial                              distribuidor_id
                                 fecha_fin
                                 distribuidor_id(numero)
                                 tienda_id(numero)
Esa es la base de datos. Me he creado una variable global de tiempo String (porque me daba fallo con el entero), la consulta que hice para obetener el ID del distribuidor es:

Código:
void __fastcall TXGestionTienda::ComboBox1Change(TObject *Sender)
{
   XDatos->QDistribuidor->Close();
   XDatos->QDistribuidor->SQL->Text = "select * from distribuidor where nombre = '"+ComboBox1->Text+"'";
   XDatos->QDistribuidor->Open();
   codigoD = XDatos->QDistribuidorDistribuidor_id->Value;
   //ShowMessage(codigoD);
}
Ya obtenido el ID, lo quiero asignar a la tabla TIENDAS para insertar una nueva tienda asignandole el distribuidor, lo que he hecho es:

Código:
void __fastcall TXGestionTienda::BitBtn1Click(TObject *Sender)
{
   XDatos->QTienda->Append();
   XDatos->QTienda->SQL->Text = "insert into tiendas(distribuidor_id) values ("+codigoD+")";
   XDatos->QTienda->Post();
}
Y el error que me salta es: " No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'DISTRIBUIDOR' ". Eso es lo que ya no sé hacer.

Un saludo.

Última edición por Casimiro Notevi fecha: 18-10-2012 a las 12:40:37.
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
función POS petete2008 Varios 4 05-09-2012 16:30:27
Función o q? Veanny Internet 2 21-02-2008 21:43:40
funcion en php KeyMan PHP 2 23-04-2007 21:11:52
Función Last Triton Firebird e Interbase 2 25-05-2005 17:46:50
La función Ord() soul6301 Varios 2 27-06-2004 01:43:17


La franja horaria es GMT +2. Ahora son las 10:36:50.


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