The March
09-04-2004, 09:44
Ola a todos,
faccio una select in sql e pare che tutto funziona bene, l'unico problema è che restituisce sempre, in qualsiasi caso una riga con null (anche il campo id) sia che abbia trovato dei record che no, in fondo ci mette sempre sta cazz di riga, cosa può essere?
il fatto è che è in una stored procedure: vi posto il codice:
CREATE PROCEDURE SPreportVerbaliDaAs
(
@P_DT_END datetime,
@P_DT_START datetime,
@FA_CODICE varchar(4),
@imp_amministratore int,
@imp_manutentore int
)
AS
declare @CodiceSql varchar (2000)
set @CodiceSql = 'select a.ver_id, ver_data, ver_scadenza, ver_stato,ver_datasped, ver_protocollo, ver_note
from commessa d
left join impianto e on d.co_id=e.co_id '
if @imp_amministratore > ''
begin
set @CodiceSql = @CodiceSql + 'AND E.IMP_AMMINISTRATORE=''' + cast(@imp_amministratore as varchar) + ''' '
end
if @imp_manutentore > ''
begin
set @CodiceSql = @CodiceSql + 'AND E.IMP_MANUTENTORE=''' + cast(@imp_manutentore as varchar) + ''' '
end
set @CodiceSql = @CodiceSql + 'left join verbale a on a.imp_id=e.imp_id
left join intervento b on a.ver_id=b.ver_id and b.int_dataprev=(select min(int_dataprev) from intervento c where c.ver_id=b.ver_id)
where d.fa_codice=''' + @FA_CODICE + ''' and ag_id is null '
if isdate(@P_DT_END) = 1
begin
set @CodiceSql = @CodiceSql + ' and b.int_dataeffet >= ''' + CAST(@P_DT_END AS VARCHAR) + ''' '
end
if isdate(@P_DT_START) = 1
begin
set @CodiceSql = @CodiceSql + ' and b.int_dataeffet <= ''' + CAST(@P_DT_START AS VARCHAR) + ''' '
end
exec (@CodiceSql)
in pratica ho 4 tabelle:
commessa
impianto
verbale
intervento
come avrete notato la select va filtrata...
in commessa il fa_codice
in impianto il manutentore e l'amministratore
in verbale ag_id deve essere nullo
le date vanno verificate su un campo int_dataprev, dala tabella intervento, prendendo però l'intervento più vecchio
faccio una select in sql e pare che tutto funziona bene, l'unico problema è che restituisce sempre, in qualsiasi caso una riga con null (anche il campo id) sia che abbia trovato dei record che no, in fondo ci mette sempre sta cazz di riga, cosa può essere?
il fatto è che è in una stored procedure: vi posto il codice:
CREATE PROCEDURE SPreportVerbaliDaAs
(
@P_DT_END datetime,
@P_DT_START datetime,
@FA_CODICE varchar(4),
@imp_amministratore int,
@imp_manutentore int
)
AS
declare @CodiceSql varchar (2000)
set @CodiceSql = 'select a.ver_id, ver_data, ver_scadenza, ver_stato,ver_datasped, ver_protocollo, ver_note
from commessa d
left join impianto e on d.co_id=e.co_id '
if @imp_amministratore > ''
begin
set @CodiceSql = @CodiceSql + 'AND E.IMP_AMMINISTRATORE=''' + cast(@imp_amministratore as varchar) + ''' '
end
if @imp_manutentore > ''
begin
set @CodiceSql = @CodiceSql + 'AND E.IMP_MANUTENTORE=''' + cast(@imp_manutentore as varchar) + ''' '
end
set @CodiceSql = @CodiceSql + 'left join verbale a on a.imp_id=e.imp_id
left join intervento b on a.ver_id=b.ver_id and b.int_dataprev=(select min(int_dataprev) from intervento c where c.ver_id=b.ver_id)
where d.fa_codice=''' + @FA_CODICE + ''' and ag_id is null '
if isdate(@P_DT_END) = 1
begin
set @CodiceSql = @CodiceSql + ' and b.int_dataeffet >= ''' + CAST(@P_DT_END AS VARCHAR) + ''' '
end
if isdate(@P_DT_START) = 1
begin
set @CodiceSql = @CodiceSql + ' and b.int_dataeffet <= ''' + CAST(@P_DT_START AS VARCHAR) + ''' '
end
exec (@CodiceSql)
in pratica ho 4 tabelle:
commessa
impianto
verbale
intervento
come avrete notato la select va filtrata...
in commessa il fa_codice
in impianto il manutentore e l'amministratore
in verbale ag_id deve essere nullo
le date vanno verificate su un campo int_dataprev, dala tabella intervento, prendendo però l'intervento più vecchio