Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Poder: 17
Mystery Va por buen camino
Problemas con Variant

Hola a todos....
bueno pues resulta que estoy tratando de utilizar un locate para ello creo una variable de tipo variant le doy la longitud en tiempo de ejecucion y sus respectivos valores pero cuando el compilador llega al locate me envia este error. "could not conver variant of type (Array Variant) into type (String)"... he estado leyendo en internet pero todavia no doy con la solucion OK...
aqui les dejo el codigo que he realizado...
Código Delphi [-]
var
  i:integer;
  arr:variant;
begin
  DMDatos.UtilMD.Active:=False;
  DMDatos.UtilMD.IndexName:='primaryKey';
  DMDatos.UtilMD.Active:=True;
  arr:=VarArrayCreate([0, DMDatos.UtilMD.IndexFieldCount], varVariant);
  DMDatos.Util.First;
  while not DMDatos.Util.Eof do begin
    for i:=0 to  DMDatos.UtilMD.IndexFieldCount-1 do
     arr[i]:=DMDatos.Util.FieldByName(DMDatos.UtilMD.IndexFields[i].FieldName).AsString;
    CAD1:=Keys(@DMDatos.Conn, DMDatos.UtilMD.TableName);
    if not DMDatos.UtilMD.Locate(CAD1, arr, [])then
     begin
      //aqui debe o no debe entrar segun el locate.. mas nada...//
     end;

chaooo
sin mas
Mystery

Última edición por rgstuamigo fecha: 27-01-2010 a las 20:39:23. Razón: Estética en el código
Responder Con Cita
  #2  
Antiguo 27-01-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues, al parecer, CAD1 es una arreglo cuando debería ser un string. El primer parámetro de Locate debe ser una cadena que liste los campos sobre los que buscas separados por punto y coma.

// Saludos
Responder Con Cita
  #3  
Antiguo 27-01-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Poder: 17
Mystery Va por buen camino
exactamente roman... pero keys es una funcion que debuelve el listado de llaves separado por ';'.... ahora lo que no se es si esa variable la tengo que poner entre chr(39).... bueno de todas formas pruebo y te digo ha y disculpa CAD1 es una variable de tipo string... no se porque debe estar pasando esto...

gracias por la sugerencia roman..
Mystery
Responder Con Cita
  #4  
Antiguo 27-01-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Poder: 17
Mystery Va por buen camino
Hola a todos... bueno pues resulta que era una excepcion que no debia saltar...
pues como todos sabemos esta es la estructura del locate...
Código Delphi [-]
Tabla.Locate(Cadena_Con_llaves, VarArrayOf([Arreglo de los valores de las respectivas llaves de la primera cadena]), []);
por ejemplo para poderme explicar bien...
Código Delphi [-]
Tabla.Locate('key1;key2', VarArrayOf(['A','B']),[]);
pero cuando tabla tiene un solo valor ud hace esto....
Código Delphi [-]
Tabla.Locate('key1', 'A',[]);
jejejeje eso era lo que me pasaba... es un variant pero para una sola llave es un string en la vida real por lo tanto cuando la tabla tiene una sola llave esta linea del codigo anterior sobra...
Código Delphi [-]
arr:=VarArrayCreate([0, DMDatos.UtilMD.IndexFieldCount-1], varVariant);
y por eso era que se lanzaba esta excepcion jejejejeje...
bueno muchas gracias sin mas

Mystery
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
String to Variant MaMu Varios 2 25-08-2008 16:58:06
Uso de variables tipo Variant robinsongm Varios 3 25-10-2006 14:36:56
Array Variant... Perio Varios 0 20-04-2006 16:57:54
Error con variant.dcu donake Varios 3 20-12-2005 12:27:19
Variant, de que tipo? Barzaugc Varios 2 26-08-2005 22:14:30


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


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