Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Parametro con ListBox

Buenas , Ayuda,

Necesito Mandar unos o varios parametros para que se ejecute un SP, este es el codigo del Sp Utilizando SQL 2005:
Código SQL [-]
CREATE PROCEDURE dbo.Cuentas_Proveedor(@SvendorId varchar(100), @SCuenta varchar(50), @SCuenta0 varchar(50))
AS
BEGIN
  /* Procedure body */
  SELECT 
 VendorId,
  Vendor,
  Documento,
  fecha,
  descriccion, 
  cuenta,
  debito,
  credito
 
FROM
  GL20000
  INNER JOIN GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  INNER JOIN GL40200 ON (dbo.GL00100.ACTNUMBR_3 = dbo.GL40200.SGMNTID)
WHERE
  vendorid = @SvendorId AND 
  cuenta IN (@SCuenta,@SCuenta0) 
GROUP BY
VendorId,
  Vendor,
  Documento,
  fecha,
  descriccion, 
  cuenta,
  debito,
  credito
  GL00100.ACTINDX
ORDER BY
6,4
END

El Sp Trabaja Muy Bien pero podria ser ejecutado con Uno o Varios Parametros en cuenta IN (@SCuenta,@SCuenta0).

La Codificacion del Delphi es la Siguiente:

Código Delphi [-]
DMTables.Reporte_Ctas_Proveedores(DMTables.DT_PM00200VENDORID.AsString,ListBox2.Items[0],ListBox2.Items[1]);

procedure TDMTables.Reporte_Ctas_Proveedores(SVendorId, sCuenta0, sCuenta1: string);
begin
   ADOSP_Reporte_Ctas_Provee.Parameters[1].Value := SVendorId;
   ADOSP_Reporte_Ctas_Provee.Parameters[2].Value := sCuenta0;
   ADOSP_Reporte_Ctas_Provee.Parameters[3].Value := sCuenta1;
   ADOSP_Reporte_Ctas_Provee.Requery();
   frxReport_Cta_Provee.PrepareReport();
   frxReport_Cta_Provee.ShowReport();
   FrmListCuentas_Provee.ListBox1.Clear;
   FrmListCuentas_Provee.ListBox2.Clear;
   FrmListCuentas_Provee.Close;
end;

Lo que deseo hacer es que cuando se envia 1 parametro solamente me trabaje con un parametro, pero me da el error "List indexout of bounds(1)", no encuentra el parametro 1,

1. Como puedo Mandar un Parametro en Blanco?
2. Si deseo Colocar mas items como se hace?

espero que haigan entendido lo sucedido.

gracias de ante manos....
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
  #2  
Antiguo 28-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Aunque no eres nuevo aquí, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Has puesto frases en mayúsculas (ya corregido), has hecho preguntas sobra lenguaje SQL y lo has puesto en el foro "Internet".


Lo cambio de sitio.
Responder Con Cita
  #3  
Antiguo 28-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Hola Casimiro, gracias por la correcion pero la pregunta es sobre el delphi.
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
  #4  
Antiguo 28-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Con el debug, ¿has comprobado que el listbox tiene los valores requeridos?
Responder Con Cita
  #5  
Antiguo 28-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Gracias Nuevamente Casimiro,

Si he comprobado que obtiene los Valores, pero me da error cuando solo quiero consultar una Cuenta y no los dos parametros que esta solicitando.
Código SQL [-]
WHERE
  vendorid = @SvendorId AND 
  cuenta IN (@SCuenta,@SCuenta0)
Gracias.
__________________
Hasta Mis Huesos son Codificados?

Última edición por Casimiro Notevi fecha: 28-02-2012 a las 21:24:18.
Responder Con Cita
  #6  
Antiguo 28-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En esos casos supongo que sólo lleva valor en el item[0] del listbox, es normal que salga ese error si no tiene valor en el item[1].
Puedes pasarle un valor que sepas que no vas a usar, ejemplo -1
y en el código de SP controlar si es -1 que haga lo que necesites, o sea, que no haga el tratamiento del segundo parámetro.
Responder Con Cita
  #7  
Antiguo 28-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Eso es la respuesta, pero como pasar un valor -1 como parametro, cuando esta vacio ese item...ni idea de como hacerlo!!!
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
  #8  
Antiguo 28-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, yo no sé qué hace tu programa ni tampoco sé cómo lo hace. No sé de dónde saca los valores el listbox, comprueba que tiene valores antes, y en caso contrario lo pones tú mismo, o cambia el listbox por un array de 2 posiciones, lo rellenas y así siempre tienen valores. En fin, son muchas opciones, pero sin saber lo que haces es difícil darte una respuesta.
Responder Con Cita
  #9  
Antiguo 28-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Lo Que hace es que son escogido Items del ListBox1 y estos son colocados en el ListBox2 y una vez selecionado los Item's estos son enviado para ejecutar el Procedimiento almacenado desde el delphi. Pero puede ser seleccionado 1, ó 2 Items. cuando selecciono los 2 item's funciona correctamente, pero cuando selecciono 1 el Mensaje de error me Aparace "List indexout of bounds(1)", En este caso solamente deseo selecionar 1 Item[0], que valor le daria al item[1].

Gracias.
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
  #10  
Antiguo 28-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues contrólalos antes de asignarlos al procedimiento, si solamente hay un item, entonces tú le das valor al segundo.
Responder Con Cita
  #11  
Antiguo 29-02-2012
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Controlarlo es lo que quiero, y no tengo ni Idea, Gracias por tu Ayuda.....
__________________
Hasta Mis Huesos son Codificados?
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
Order by por parametro morfeo21 Firebird e Interbase 3 18-01-2012 23:16:25
Consulta con el HAVING por parámetro rubio SQL 22 14-10-2011 14:36:11
agregar y/o eliminar items de un listbox a partir de otro listbox Goyo PHP 2 27-09-2007 16:46:30
Dll con parametro variable rastafarey Firebird e Interbase 1 08-11-2005 18:03:56
¡Parametro no correcto! Ana Cristina Varios 3 14-05-2004 21:31:17


La franja horaria es GMT +2. Ahora son las 05:42:18.


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