Ver Mensaje Individual
  #12  
Antiguo 19-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Reputación: 21
RONPABLO Va por buen camino
Cita:
Punto 1.- En una BD yo puedo tener varios indices de una misma tabla para que en el tema de consultas sea mas rapido. Si consulto una cosa me interesaria utilizar un indice y si consulto otra, pues me interesaria utilizar otro indice. Pues bien, como se le puede indicar eso (si es posible) en una SP?.

digamos hay una tabla llamada tabla con los campos c1, c2, c3 y c4 de los cuales los campos c1 y c2 están indexados.

Código SQL [-]
begin
    for select c3,  c4  from tabla where
         ((c1 = :c1) or :c1 is null)) and ((c2 = :c2) or (:c2 is null))
         into :c3, :c4 do
         begin
            suspend;
         end
end

como tal en el ejemplo anterior es buscar por un indice y/o por el otro, en es ejemplo la idea es que :c1, :c2 son parámetros de entrada y :c3, :c4 parámetros de salida, con los parámetros de entra yo puedo decidir por cual de los dos buscar, por decir algo si quiero solo buscar lo que hay en el campo indexado c1 mando un valor que se debe encontrar en dicho campo por medio del parámetro :c1 y mando un null en el parámetro :c2 y al revés si quiero buscar por el campo indexado c2 (espero sea esto lo que busques)

Cita:
Punto 2.- Ya tenia mas o menos claro lo de el for select...do y el suspend, mi pregunta era (para no utilizar MDOTtable) que una vez hecha la consulta con una MDOStoredProc, como recorro el conjunto de registros resultante y con que componente se pueden mostrar gráficamente.
como tal el MDOTQuery, MDOTtable y el MDOTDataSet son DataSets que se pueden asociar a un DataSource y este a un DBGrind por decir algo, entonces puedes usar un MDOTQuery para retornar informacion. para consultar datos no debes de usar el MDOStoredProc, estos son para el tipo de sp que solo hacen cambios (Deletes, Update e Insrts)

Código Delphi [-]
    MDOTQuery.sql := 'select * from sp(:c1,:c2);'
    MDOTQuery.ParamByName('c1').asInteger := var1;
    MDOTQuery.ParamByName('c2').asInteger := var2;
    MDOTQuery.Open;

y si esta bien enlazado a un dbGrid se vera los campos c3 y c4 en el dbGrid
Responder Con Cita