Print Page | Close Window

insert into multiplo: miglioramento codice

Printed From: IALweb
Category: Programmazione
Forum Name: ASP-ASP.NET
Forum Discription: Discussioni generiche su Active Server Pages
URL: https://forum.ialweb.it/forum_posts.asp?TID=16465473
Printed Date: 19/Lug/2019 at 01:19
Software Version: Web Wiz Forums 10.17 - http://www.webwizforums.com


Topic: insert into multiplo: miglioramento codice
Posted By: il_betto
Subject: insert into multiplo: miglioramento codice
Date Posted: 19/Giu/2014 at 09:48
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 !!!



Print Page | Close Window

Forum Software by Web Wiz Forums® version 10.17 - http://www.webwizforums.com
Copyright ©2001-2013 Web Wiz Ltd. - http://www.webwiz.co.uk