Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2010
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Dataset con parametros tipo arreglo.

Hola que tal foro, necesito de vuelta de su valiosa ayuda.
Lo que necesito en pocas palabras es:
1 - llenar un parametro de tipo array de un dataset.

Sino me entendieron, les cuento que estoy trabajando con:
postgresql y delphi 6.0 en mi trabajo, eh creado una función en postgresql para llenar un maestro detalle desde una sola vez, la función funciona bien, la probe desde postgres, esta funcion tiene como parametros, los campos de la tabla maestra, y del detalle (estos ultimos son un vector por cada columna de la tabla detalle). En fin para llamar a la función desde postgress hago lo siguiente y funciona de mil maravilla.

Código SQL [-]
select * from OrdenComprainsert(1, 1, 'Urgente', '2010-10-10', 1, 'Contado', 'Encomienda', 'Juan Perez', '2010-11-11', 
'proveedor eficas', 1, '2010-10-11', 2, array[1,2,3], array[5, 2.5, 3], array[3, 3.5, 2])

En delphi tengo un objeto llamado psinsert: TPSQLQuerie
que en su propiedad sql, tiene la misma consulta de arriba, pero con parametros.

a cada parametro le pongo su : correspondiente, no lo pongo aca porque me salen caritas.

Código SQL [-]
select * from OrdenComprainsert(Pemplea, Ptipo, Pecha, pidprovee, pformapago, Pformaenvio, 
pcontato, pfechaentrega, pnota, pnumerocot, pfecha1impr, Pultimacot, particulos, pcantidad, pprecio)
particulos un arreglo de enteros
pcantidad y pprecio un arreglo de numeric(8,2) o float.

Defino los parámetros según el tipo correspondiente (ftinteger, ftstring, y los de tipo vector los defino de tipo ftArray), cuando voy a cargar los parámetro hago.

Código Delphi [-]
with PSInsert do
   begin
   Close;
   ParamByName('Pemplea').AsInteger:= wg_idEmplea;
   ParamByName('Ptipo').AsString:= CBTipo.Text;
   ParamByName('Pfecha').AsDateTime:= E_Fecha.Date;
   ParamByName('Pidprovee').AsInteger:= StrToInt(E_Proveedor.Text);
   ParamByName('pformapago').AsString:= E_FormaPago.Text;
   ParamByName('pformaenvio').AsString:= E_FormaEnvio.Text;
   ParamByName('pcontato').AsString:= E_Contacto.Text;
   ParamByName('pfechaentrega').AsDateTime:= E_Fecha_Entrega.Date;
   ParamByName('pnota').AsString:= E_Nota.Text;
   ParamByName('pnumerocot').AsInteger:= StrToInt(E_NCotizacion.Text);
   ParamByName('pfecha1impr').AsDateTime:= E_FechaImpresion.Date;
   //debo ingresar los parametros :Pultimacot, articulos, cantidad, precio
   //que son vectores, no se como hacerlo.

   end;

Bueno, eso es lo que no puedo hacer, de vuelta como siempre busque tanto en google como por acá y en libros.

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 09-10-2010
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Thumbs up [Solucionado] Un poco parchado.

Hola que tal, querido foro, al problema lo solucione de la siguiente manera:
Modifque el dataset y lo deje de la siguiente manera.

Código SQL [-]
select * from OrdenComprainsert(Pemplea, Ptipo, Pecha, pidprovee, pformapago, Pformaenvio, 
pcontato, pfechaentrega, pnota, pnumerocot, pfecha1impr, Pultimacot,

Luego en el procedimiento que llama al dataset declare variables de tipo String
y fui cargando las variables.

Código Delphi [-]
var
   vectarticulos: string;
   vectcantidad: string;
   vectprecio: string;
   addsql :string;
begin
vectarticulos := 'array [ ';
vectcantidad := 'array [ ';
vectprecio:= 'array [ ';

// Cargo los string con la tabla detalle.
with Qtempcot do //tabla de memoria, que tiene los datos del detalle.
   begin
   if not Eof then
      begin
         First;
         vectarticulos := vectarticulos + fieldbyname('numeronp').AsString;
         vectcantidad := vectcantidad + fieldbyname('cantidad').AsString;
         vectprecio:= vectprecio + fieldbyname('preciounitario').AsString;
         Next;
         while not Eof do
            begin
            vectarticulos := vectarticulos + ', ' + fieldbyname('numeronp').AsString;
            vectcantidad := vectcantidad + ', ' + fieldbyname('cantidad').AsString;
            vectprecio:= vectprecio + ', ' + fieldbyname('preciounitario').AsString;
            Next;
            end;
      vectarticulos:= vectarticulos + ' ]';
      vectcantidad:= vectcantidad + ' ]';
      vectprecio:= vectprecio + ' ]';
      addsql:= vectarticulos +', ' + vectcantidad + ', ' + vectprecio + ' ) ';
      end;
   end;
datasetquery.sql.add(addsql);
luego cargue los demas parametros.

Cuando realice la pregunta acá ya tenia en mente esa solución, pero no me gusta parchar el código, luego de buscar en el lado oscuro de delphi 4, y en la guia del desarrollador de delphi 5, finalmente en la Biblia de Delphi 7 y no encontrar nada sobre parametros de tipo vector; tuve que buscar en distintas pagina web y no encontre nada en Español y en ingles (lo poco que busque) tampoco, bueno lo dejo acá para que le sea de ayuda al que lo necesite.
Responder Con Cita
  #3  
Antiguo 09-10-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.099
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Muchas gracias por dejar el código, seguro que a más de uno le viene bien
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
Limpiar parametros de un DataSet Punzo Conexión con bases de datos 2 20-11-2015 00:56:43
Parametros sin tipo. yapt OOP 5 13-04-2010 16:45:23
Parametros de Tipo String DasGrun OOP 3 19-03-2010 00:17:35
parrametros tipo arreglo chileno Varios 2 17-04-2006 14:24:49
Es posible usar Parametros en ModifySQL,InsertSQL,... del Dataset? Halfo Firebird e Interbase 1 07-08-2004 00:45:28


La franja horaria es GMT +2. Ahora son las 23:45:05.


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