Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   error con un reporte sql... (https://www.clubdelphi.com/foros/showthread.php?t=20999)

uper 03-05-2005 17:58:49

error con un reporte sql...
 
saludos a todos.

expongo mi duda, tengo un reporte que me imprime entradas o salidas seleccionandolo con un TradioGroup, este status es para una tabla de stock, eligiendo por fechas de inicio y final y dado caso por vendedor(siendo opcional si la queremos buscar por vendedor),
Ahora se require que se imprima tanto entradas y salidas, en el radio group le agrege un item "Ambas" (engloba E/S).

case grpVendedor.ItemIndex of
0 : strMovimiento := 'E'; // E = entrada S =salida
1 : strMovimiento := 'S';
2 : strMovimiento := 'A'; //ambas
end

Primero lanzo un vista previa con un procediemiento, este es codigo que me da un error de missing operator or semicolon

procedure
var
strSQL, strCondicion1, strCondicion2, strCondicion3, strCondicion4 : string;
begin
strSQL := 'SELECT '+
' CLIENTES.CLIENTE_COMERCIAL, '+
' STOCK.STOCK_NOMBRE, '+
' MOV_STOCK.MOVS_TIPO_MOV, '+
' MOV_STOCK.MOVS_ENTRADA, '+
' MOV_STOCK.MOVS_SALIDA, '+
' STOCK.STOCK_MILLARES, '+
' VENDEDORES.VENDEDOR_NOMBRE, '+
' MOV_STOCK.MOVS_FECHA_REG, '+
' STOCK.STOCK_LARGO, '+
' STOCK.STOCK_ANCHO, '+
' MOV_STOCK.MOVS_ESTADO '+
' FROM '+
' MOV_STOCK '+
' INNER JOIN STOCK ON (MOV_STOCK.MOVS_STOCK_ID = STOCK.STOCK_ID) '+
' INNER JOIN CLIENTES ON (STOCK.STOCK_CLIENTE_ID = CLIENTES.CLIENTE_ID) '+
' INNER JOIN VENDEDORES ON (CLIENTES.CLIENTE_VENDEDOR_ID = VENDEDORES.VENDEDOR_ID) ';
//MOVS_TIPO_MOV solo tiene el valor E o S
if Movimiento <> 'A' then
strCondicion1 := 'WHERE (MOV_STOCK.MOVS_TIPO_MOV =:TipoMov) '+
'AND(MOV_STOCK.MOVS_FECHA_REG BETWEEN :fInicio AND :fFinal) ' +
'AND(MOV_STOCK.MOVS_ESTADO = :Estado)'
else
if Movimiento = 'A' then //englobaria ambas
strCondicion1 := 'WHERE (MOV_STOCK.MOVS_TIPO_MOV ='E' AND MOV_STOCK.MOVS_TIPO_MOV ='S')'+ ----->error en 'E' y 'S'
' AND (MOV_STOCK.MOVS_FECHA_REG BETWEEN :fInicio AND :fFin) ' +
' AND (MOV_STOCK.MOVS_ESTADO =:Estado)';
if strVendedor <> '' then
strCondicion2 := 'AND (VENDEDORES.VENDEDOR_NOMBRE starting with :Parametro) ';
strCondicion3 := 'ORDER BY VENDEDORES.VENDEDOR_NOMBRE';
with qryReporteStock do
begin
Close;
SQL.Clear;
SQL.Add(strSQL);
SQL.Add(strCondicion1);
SQL.Add(strCondicion2);
SQL.Add(strCondicion3);
if Movimiento <> 'A' then
paramByName('TipoMov').AsString := Movimiento;
ParamByName('fInicio').AsString := fechaInicio;
ParamByName('fFinal').AsString := fechaFinal;
ParamByName('Estado').AsString := 'A';
if strVendedor <> '' then
ParamByName('Parametro').AsString := strVendedor;
Prepare;
Open;
if RecordCount <> 0 then
crea_destruye
else showmessage('No hay registros');
end
end; //fin del procedimeinto
les agradesco si me puede ayudar enque esta mal mi condicion.
Gracias Club.

rastafarey 03-05-2005 18:33:20

resp
 
Cita:

Empezado por uper
strCondicion1 := 'WHERE (MOV_STOCK.MOVS_TIPO_MOV ='E' AND MOV_STOCK.MOVS_TIPO_MOV ='S')'+ ----->error en 'E' y 'S'
' AND (MOV_STOCK.MOVS_FECHA_REG BETWEEN :fInicio AND :fFin) ' +
' AND (MOV_STOCK.MOVS_ESTADO =:Estado)';

Verifica aqui.

Donde esta la condiocn '... = 'E' ...';

para usas comillas simples en un cadena debe ser asi '... = ''E'' ...';
Nota. Noes doble comilla son dos comillas simples.

Ha una cosa hermano. Usas las etiquetas para que pueda entender tu pregunta. Por que nadie te va a responder asi ok.


La franja horaria es GMT +2. Ahora son las 07:17:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi