y que tal si en lugar de usar parametros lo solucionas armando una cadena
algo asi como:
Código Delphi
[-]cadena := '';
if Edit1.Text<>'' then Cadena := cadena + edit1.text
if Edit2.Text<>'' then Cadena := cadena + edit2.text
if Edit3.Text<>'' then Cadena := cadena + edit3.text
if Edit4.Text<>'' then Cadena := cadena + edit4.text
if Edit5.Text<>'' then Cadena := cadena + edit5.text
if Edit6.Text<>'' then Cadena := cadena + edit6.text
if Edit7.Text<>'' then Cadena := cadena + edit7.text
if Edit8.Text<>'' then Cadena := cadena + edit8.text
yo tengo una funcion que una cadena de caracteres la separa en comas, para que se pueda ejecutar el sql usando IN
Código Delphi
[-]Function _Digito(_String : string ; _Tipo :Integer) :String;
var _Dig :String; _i :Integer;
begin
_Dig := '';
if _tipo = 0 then
begin
For _i:= 1 to Length(_string) do
_Dig := _Dig + Copy (_String, _i, 1) + ',';
Result := Copy (_Dig,1, Length(_DIG) -1);
end
Else
begin
For _i:= 1 to Length(_string) do
_Dig := _Dig + QuotedStr(Copy (_String, _i, 1)) + ',';
Result := '(' + Copy (_Dig,1, Length(_DIG) -1) +')';
end;
end;
si la ejecuto asi
_cad := _digito ('1234',1)
el resultado es ('1','2','3','4')
entonces en la consulta sql podria usar...
SELECT MARCA,CODIGO,FORMULA,NUMERO,DESCRI,CODIGOI FROM INVENTA WHERE M1 in _cad
yo lo hago mas o menos asi
Código Delphi
[-]_CadDB := _Digito('D1I+',1);
_CadHB := _Digito('H2S-',1);
While not qryPlanContable.Eof do
Begin
Strsql := 'select Left(M.cuenta, 2) As Cuenta, M.Libro, Lbr.Descripcion As DLibro, ';
if rgMoneda.ItemIndex = 1 then
Strsql := Strsql + 'SUM (Case when M.DH in ' + _CadDB + ' then M.u_IMP else 0.00 End) AS DEBE, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.u_IMP else 0.00 End) AS HABER, ' +
'SUM (Case when M.DH in ' + _CadDB + ' then M.n_IMP else 0.00 End) AS DEBEMN, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.n_IMP else 0.00 End) AS HABERMN, ' +
'SUM (Case when M.DH in ' + _CadDB + ' then M.u_IMP else 0.00 End) AS DEBEME, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.u_IMP else 0.00 End) AS HABERME '
Else
Strsql := Strsql + 'SUM (Case when M.DH in ' + _CadDB + ' then M.n_IMP else 0.00 End) AS DEBE, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.n_IMP else 0.00 End) AS HABER, ' +
'SUM (Case when M.DH in ' + _CadDB + ' then M.n_IMP else 0.00 End) AS DEBEMN, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.n_IMP else 0.00 End) AS HABERMN, ' +
'SUM (Case when M.DH in ' + _CadDB + ' then M.u_IMP else 0.00 End) AS DEBEME, ' +
'SUM (Case when M.DH in ' + _CadHB + ' then M.u_IMP else 0.00 End) AS HABERME ';
Strsql := Strsql + 'from (tblmovimientocontable M with (nolock) ' +
' Left Join TblLibro Lbr with (nolock) ON (Lbr.Empresa = M.Empresa and Lbr.KOD = M.Libro)) ' +
' where M.Empresa = ' + QuotedStr(dmGlobal.g_CodigoEmpresa) + ' and M.Periodo = ' + QuotedStr(dmGlobal.g_Periodo) +
' and Left (M.cuenta,2) = '+ QuotedStr(qryPlanContableCuenta.AsString) +
' Group by Left(M.CUENTA,2), M.Libro, Lbr.Descripcion ' +
'order by Left(M.CUENTA,2), M.Libro';
quiza eso pueda ayudarte