Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2007
chelox chelox is offline
Miembro
 
Registrado: sep 2006
Posts: 13
Poder: 0
chelox Va por buen camino
aca va el código.

de anoche a hoy me parece que me di cuenta de algo...

que no puedo hacer consultas seguidas, si ya estoy usando una tabla
así que el problema es otro ahora

supongo que tendré que hacer una consulta por vez y cuando termina una, debo seguir con la otra, de esta forma puedo guardar la direccion en una variable


El sistema lo que hace, es enviar ficheros a dispositivos celulares



EL CODIGO:





procedure Tform1.procesar(s:String;n:Integer);
Begin
if (self.procesando_list.Count<strtoint(self.c_config.Items.Strings[0])) Then
Begin
if (objeto<>'') Then
Begin
self.procesando_list.Items.Add(s);
// antes enviaba siempre el mismo fichero
// enviar(s,self.c_config.Items.Strings[1] + 'objetos\' + objeto)
// ahora tiene que buscar en la base de datos segun el prefijo de la direccion, el fichero que corresponda
buscarModelo(s:String);
End;
End;
End;




procedure Tform1.buscarModelo(s:String);
var
i:Integer;
coma,servicios_dato,dato:String;
servicios: TBFBluetoothServices;
servicio: TBFBluetoothService;
prefijo: String;
Begin
servicios := EnumServices(s,true,Dongle);
servicios_dato := '';
coma := '';
for i:=0 to servicios.Count - 1 do
Begin
servicio := servicios.Service[i];
dato := coma + inttostr(i) + ':' + inttostr(servicio.Channel) + ':' + inttostr(servicio.UUID16);
servicios_dato := servicios_dato + dato;
coma := ',';
End;
prefijo := stringReplace(s,':','',[rfReplaceAll]);
prefijo := copy(prefijo,2,6);
// segun el prefijo de la direccion y los servicios pertenece a un grupo
d2.tgrupo.Close;
d2.tgrupo.SQL.Clear;
d2.tgrupo.SQL.Add('SELECT modelos.id, modelos.marca, modelos.modelo, agrupar.grupo');
d2.tgrupo.SQL.Add('FROM modelos');
d2.tgrupo.SQL.Add('INNER JOIN agrupar ON (modelos.id = agrupar.modelo)');
d2.tgrupo.SQL.Add('WHERE (modelos.prefijo = ' + '''' + prefijo + '''' + ')');
d2.tgrupo.SQL.Add('AND (modelos.servicios = ' + '''' + servicios_dato + '''' + ')');
d2.tgrupo.Open;
End;

procedure Tform1.encontroModelo(datos:TDataSet);
var
objeto2:String;
p1,largo,n, grupo, modelo, il:Integer;
s,busca:String;
Begin
n := datos.RecordCount;
if (n>0) Then
Begin
grupo := datos.fieldByName('grupo').Value;
modelo := datos.fieldByName('id').Value;
End
else
Begin
grupo := 0;
modelo := 0;
End;
// esto es porque guardo la lista de ficheros en una lista pero le pongo 1,fich.. 2,fich etc...
busca := inttostr(grupo) + ',';
il := BuscarEnLista(lista_objetos.Items,busca);
objeto2 := lista_objetos.Items.Strings[il];
largo := length(objeto2);
p1 := pos(',',objeto2);
objeto2 := copy(objeto2,p1+1,largo - p1);
// ahora debera enviar el fichero encontrado
// de donde saco la dirección???
enviar(ACALADIRECCION,self.c_config.Items.Strings[1] + 'objetos\' + objeto2)
end;



// en la unidad de las base de datos:
procedure Td2.tgrupoAfterOpen(DataSet: TDataSet);
begin
form1.encontroModelo(DataSet);
end;
Responder Con Cita
  #2  
Antiguo 05-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.744
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Por lo que entiendo:
- con BUSCARMODELO posicionas una tabla en un registro
- con ENCONTROMODELO haces algo con los datos de ese registro.

Supongo que la solución sería que BUSCARMODELO te devolviera los datos que vas a uar en ENCONTROMODELO y se los pasaras.
(n, grupo y modelo deberán ser variable globales al thread)
Quizás también agregaría un tGrupo.Close después de la consulta en BUSCARMODELO, si no es necesario que quede abierto.

Código Delphi [-]
procedure Tform1.procesar(s:String;n:Integer);
Begin
   if (self.procesando_list.CountThen
   Begin
      if (objeto<>'') Then
      Begin
         self.procesando_list.Items.Add(s);
         // antes enviaba siempre el mismo fichero
         // enviar(s,self.c_config.Items.Strings[1] + 'objetos\' + objeto)
         // ahora tiene que buscar en la base de datos segun el prefijo de la direccion, el fichero que corresponda
         buscarModelo(s, n, grupo, modelo);
      End;
   End;
End;




procedure Tform1.buscarModelo(s:String; var n, grupo, modelo : integer);
var
i:Integer;
coma,servicios_dato,dato:String;
servicios: TBFBluetoothServices;
servicio: TBFBluetoothService;
prefijo: String;
Begin
   servicios := EnumServices(s,true,Dongle);
   servicios_dato := '';
   coma := '';
   for i:=0 to servicios.Count - 1 do
   Begin
      servicio := servicios.Service[i];
      dato := coma + inttostr(i) + ':' + inttostr(servicio.Channel) + ':' + inttostr(servicio.UUID16);
      servicios_dato := servicios_dato + dato;
      coma := ',';
   End;
   prefijo := stringReplace(s,':','',[rfReplaceAll]);
   prefijo := copy(prefijo,2,6);
   // segun el prefijo de la direccion y los servicios pertenece a un grupo
   d2.tgrupo.Close;
   d2.tgrupo.SQL.Clear;
   d2.tgrupo.SQL.Add('SELECT modelos.id, modelos.marca, modelos.modelo, agrupar.grupo');
   d2.tgrupo.SQL.Add('FROM modelos');
   d2.tgrupo.SQL.Add('INNER JOIN agrupar ON (modelos.id = agrupar.modelo)');
   d2.tgrupo.SQL.Add('WHERE (modelos.prefijo = ' + '''' + prefijo + '''' + ')');
   d2.tgrupo.SQL.Add('AND (modelos.servicios = ' + '''' + servicios_dato + '''' + ')');
   d2.tgrupo.Open;

   n := datos.RecordCount;
   grupo := datos.fieldByName('grupo').Value;
   modelo := datos.fieldByName('id').Value;
   tGrupo.Close {Esto solo si no se necesita para otra cosa}
End;

procedure Tform1.encontroModelo(datos:TDataSet; n, grupo, modelo : integer);
var
objeto2:String;
p1,largo,n, grupo, modelo, il:Integer;
s,busca:String;
Begin
   { viene como parámetro
   n := datos.RecordCount;}
   if (n>0) Then
   Begin
      { vienen como parámetros
      grupo := datos.fieldByName('grupo').Value;
      modelo := datos.fieldByName('id').Value;
      }
   End
   else
   Begin
      grupo := 0;
      modelo := 0;
   End;
   // esto es porque guardo la lista de ficheros en una lista pero le pongo 1,fich.. 2,fich etc...
   busca := inttostr(grupo) + ',';
   il := BuscarEnLista(lista_objetos.Items,busca);
   objeto2 := lista_objetos.Items.Strings[il];
   largo := length(objeto2);
   p1 := pos(',',objeto2);
   objeto2 := copy(objeto2,p1+1,largo - p1);
   // ahora debera enviar el fichero encontrado
   // de donde saco la dirección???
   enviar(ACALADIRECCION,self.c_config.Items.Strings[1] + 'objetos\' + objeto2)
end;



// en la unidad de las base de datos:
procedure Td2.tgrupoAfterOpen(DataSet: TDataSet);
begin
   form1.encontroModelo(DataSet, n, grupo, modelo);
end;

Última edición por duilioisola fecha: 05-10-2007 a las 14:40:32.
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
problema de logica con filter y ciclos vroa74 Conexión con bases de datos 2 07-03-2007 22:46:47
group by y problema de logica reina SQL 3 23-05-2006 15:08:45
Problema de logica haciendo comparaciones en SQL CHiCoLiTa SQL 4 04-03-2005 01:56:32
Programación Lógica (Metodo de Resolución) Luis Abraham Varios 4 27-10-2004 15:18:37
problema base de datos migueilichenco Conexión con bases de datos 9 21-05-2003 22:19:47


La franja horaria es GMT +2. Ahora son las 18:51:53.


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