![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
resp
Cita:
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.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
![]() |
|
|
![]() |
|