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 18-07-2008
franfl franfl is offline
Miembro
 
Registrado: feb 2008
Posts: 88
Poder: 17
franfl Va por buen camino
DataField clave primaria doble

Hola
Necesito encontrar en una tabla un valor, el problema es q esta tabla es una relacion n:m, es decir, la clave primaria la forman 2 campos, entonces no soi capaz de encontrarla. Hago lo siguiente:

BuscarDatos(tabla,"IDPROGRAMA;IDENTRENO",MD->qIBInforme1->FieldValues["IDPROGRAMA;IDENTRENO"]);

void BuscarDatos(TIBTable *tabla, const AnsiString &campo, const AnsiString &dato){
// Limpiamos las opciones de búsqueda
TLocateOptions().Clear();
// Situamos el puntero sobre la fila adecuada
tabla->Locate(campo,dato,TLocateOptions());
}

pero el FieldValues creo q solo es para buscar un valor concreto, no dos registros. Entonces no se que usar.
Muchas gracias
Un saludo
Responder Con Cita
  #2  
Antiguo 18-07-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Hola franfl,

Primero, trate de evitar FieldValues para evaluar un campo de un DataSet; mejor use algo como:

Código:
 MiTabla->FieldByName("CampoX")->As...TipoDeDato
Segundo, para hacer Locate() por llave compuesta, sería con:

Código:
 MiTabla1->Locate("Campo1;Campo2",
                  VarArrayOf(MiTabla2->FieldByName("CampoA")->AsVariant,
                             MiTabla2->FieldByName("CampoB")->AsVariant),
                  TLocateOptions());
--
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 19-07-2008
franfl franfl is offline
Miembro
 
Registrado: feb 2008
Posts: 88
Poder: 17
franfl Va por buen camino
Hola
Estoy haciendo un proyecto bastante grande y ahora no me compila otra parte por otros errores,pero entre hoy y mañana los arreglo, hago lo que me dijiste y ya te comento
Muchisimas gracias Topx
Un saludo
Responder Con Cita
  #4  
Antiguo 23-07-2008
franfl franfl is offline
Miembro
 
Registrado: feb 2008
Posts: 88
Poder: 17
franfl Va por buen camino
Despues de mucho tiempo ya soluciones los otros errores, y por desgracia esto tambien me casca:
Yo tengo dos enteros que forman la clave primaria entonces hago:

VarArrayOf(ent, ejer); //Que ya da error pq tiene q ser const variant y no se como hacerlo

tabla->Locate("IDENTRENO;IDEJERCICIO", VarArrayOf(ent, ejer); ,TLocateOptions());

Muchas gracias
Responder Con Cita
  #5  
Antiguo 24-07-2008
franfl franfl is offline
Miembro
 
Registrado: feb 2008
Posts: 88
Poder: 17
franfl Va por buen camino
Hola
Ya lo solucione, lo que hago es:

Variant V[2]; // la creo con 2 posiciones

V[0] = ent;
V[1] = ejer;

tabla->Locate("IDENTRENO;IDEJERCICIO", VarArrayOf(V,1) ,TLocateOptions());

Es decir el VarArrayOf tiene como parametros el dato Variant, y hasta que posicion cojo.

Muchas gracias y a ver si sirve para otros con dudas.
Un saludo
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
Autoincrement de acuerdo a la clave primaria lucasarts_18 MySQL 0 19-03-2008 14:40:36
Ayuda Con Clave Primaria pablo2244 MySQL 4 30-05-2005 21:49:01
cambiar la clave primaria con SQL User_Baja_2 SQL 8 18-06-2004 08:41:31
Cambiar clave primaria pinoxito Firebird e Interbase 7 13-01-2004 21:51:26
cambiar una clave primaria User_Baja_2 SQL 3 06-10-2003 18:03:38


La franja horaria es GMT +2. Ahora son las 10:33:42.


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