Ciao a Tutti,
in questi giorni ho avuto il seguente problema:
all' esecuzione della pagina asp il record della tabella t_mrg va ad inserirsi nella tabella t_feed se e solo se in essa non esiste gia';
il record della tabella t_mrg deve essere pero' ripetuto 2 volte uguale nella tabella t_feed; l' unica differenza tra i 2 records che vengono generati nella tabella t_feed sta nel fatto che i campi della tabella t_feed: FB01 e FB02 devono popolarsi automaticamente dei valori 'Yes' in modo alternato.
Quindi, se il record della tabella t_mrg e' il numero 2014073 e non esiste nella tabella t_feed,
all' esecuzione della pagina asp il cui codice e' di sotto riportato,
si generano 2 records uguali nella tabella t_feed che presentano l' unica differenza nei campi FB01 e FB02 nel sugente modo:
Numero ... FB01 FB02
2014073 Yes
2014073 Yes
<%@ Language=VBScript %>
<%
Option Explicit
Dim cn3, i, sql9
i = 1
'
Set cn3 = Server.CreateObject("ADODB.Connection")
cn3.ConnectionString = "DSN=9_feed.dsn"
cn3.Open
sql9 = "INSERT INTO t_feed (Numero, Nome, FB01, FB02) " & _
"SELECT t_mrg.Numero, First(t_mrg.Nome) AS Nome, First(IIf(IsNull([t_feed.FB02]),'Yes',[t_feed.FB01])) AS FB01, First(t_feed.FB02) AS FB02 " & _
"FROM t_mrg, t_feed " & _
"GROUP BY t_mrg.Numero " & _
"HAVING ((t_mrg.Numero=2014073) AND t_mrg.Numero Not In (SELECT t_feed.Numero FROM t_feed))"
cn3.Execute sql9
sql9 = "INSERT INTO t_feed (Numero, Nome, FB01, FB02) " & _
"SELECT TOP 1 t_mrg.Numero, First(t_mrg.Nome) AS Nome, t_feed.FB01 AS FB01, 'Yes' AS FB02 " & _
"FROM t_mrg, t_feed " & _
"GROUP BY t_mrg.Numero, t_feed.FB01 " & _
"HAVING (t_mrg.Numero=2014073) AND (SELECT Count(*) AS Conteggio FROM t_feed WHERE Numero=2014073)=" & i & ""
cn3.Execute sql9
cn3.Close
'
Set cn3 = Nothing
%>
Il codice postato funziona bene; solo che ho scritto questo post perche' chiedevo se c' era un modo migliore di scriverlo ...
Nel senso:
- mi piacerebbe che anziche' eseguire 2 volte sql9 si potessero unire i due INSERT INTO in un unico blocco di codice
- non mi piace essere ricorso al SELECT TOP 1
Grazie mille in anticipo !!!

Rispondi quotando