[risolto] Azioni su più tabelle contenute in un database

GigiBena

Nuovo Utente
7 Apr 2013
12
0
1
Ho un database aggiornamenti.mdb che contiene due tabelle
Tabella PRODOTTI con campi prodotto e consumato
Tabella STATISTICA con campi prodotto e totalestatistica

Sarebbe mia intenzione creare una funzione che:
parta dal primo record della tabella prodotti, legga il dato del campo prodotto (es 34723), lo confronti con TUTTI i campi prodotto della tabella statistica e se il dato risulta uguale, scriva nel campo consumato sempre del primo record della tabella prodotti il valore contenuto nel campo totalestatistica. Successivamente passi al secondo record ripeta il controllo su tutti i record e se presente scriva, ecc.

Non essendo un esperto, in modo molto approssimativo avrei pensato a questa soluzione. E' corretto aprire in questo modo la connessione al database e i Recordset?
<%
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("aggiornamenti.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn
sql = "SELECT * FROM PRODOTTI "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
Dim Nrecord ‘ CONTO IL NUMERO DI RECORD TOTALI
Nrecord=rs.RecordCount
Set Conn2=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("aggiornamenti.mdb")
strConn=strConn & ";pwd=" & strCode
Conn2.Open strConn
For contatore = 1 To Nrecord
prodotto=rs(1)
sql2="SELECT * FROM statistica"
sql2=sql2 & " WHERE prodotto='" & prodotto & "' ORDER BY id DESC"
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, Conn2 ,3,3
if not(rs2.eof) then
do while not(rs2.eof)
dim totstatistica
totstatistica =rs2(2)
rs(2)= totstatistica
rs.update
rs2.movenext
loop
rs.movenext
next
Chiusura connessione
%>

Grazie mille
Gigi
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
...mandami una copia del DB a: (rimossa)
ovviamente con un numero congruo di record in modo da simulare le tue esigenze, a tempo perso ti creo lo script.
Paolo
 
Ultima modifica:

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Ciao, per non creare dei dati ridondanti ho elaborato per te questo script che effettua una join sulle due tabelle:

Codice:
<%

' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' @@@@ CONNESSIONE AL DATA BASE
' @@@@ Versione ACCESS
	strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/fitness/script/aggiornamenti.mdb")
' @@@@ DB in sola lettura non presente in tutti i Comandi
' @@@@ Fine
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ INIZIO 
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

	Set Ciclo = Server.CreateObject("ADODB.Recordset")
		Ciclo.ActiveConnection = strConnect
		Ciclo.Source = "SELECT * FROM prodotti " &_ 
				    "INNER JOIN statistica ON prodotti.prodotto=statistica.prodotto WHERE prodotti.prodotto=statistica.prodotto " &_ 
				    "ORDER BY prodotti.nomeprodotto;" 
		Ciclo.CursorType = 0
		Ciclo.CursorLocation = 2
		Ciclo.LockType = 1
		Ciclo.Open()
			If NOT Ciclo.EOF Then ' se presente visualizzo

%>
<table width="600" cellpadding="1" cellspacing="1" border="1" align="center">
<tr>
<td width="120">codice</td>
<td>prodotto</td>
<td>statistica</td>
</tr>
<%
					Ciclo_Min = 0
					Ciclo_Max = 999 ' massimo record estrapolati
				While ((Ciclo_Min <> Ciclo_Max) AND (NOT Ciclo.EOF))
				
						prodotto = (Ciclo.Fields.Item("prodotto").Value)
						nome_prodotto = (Ciclo.Fields.Item("Nomeprodotto").Value)
						statistica = (Ciclo.Fields.Item("totalestatistica").Value)
						
						
%>
<tr>
<td><%=prodotto%></td>
<td><%=nome_prodotto%></td>
<td><%=statistica%></td>
</tr>
<%
		
					Ciclo_Min = Ciclo_Min + 1
					Ciclo.MoveNext()
				Wend

%>
</table>
<%
			End If ' chiudo controllo record
		Ciclo.Close
	Set Ciclo = Nothing ' chiudo il recordset

' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ FINE 
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

%>


Link prova: http://www.caprioli.info/fitness/script/aggiornamenti.asp

Se hai bisogno di ulteriori modifiche e non sei in grado chiedi pure.
Buona serata.
Paolo
 

GigiBena

Nuovo Utente
7 Apr 2013
12
0
1
Fantastico, funziona perfettamente. Ma come dovrei comportarmi se volessi scrivere fisicamente,”quando il confronto corrisponde”, il contenuto del campo totalestatistica della tabella statistica, nel campo consumato della tabella prodotti,?
Grazie ancora
Gigi
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Allora, aggiungi questo nella pagina aggiornamenti:

Codice:
.....
		Ciclo.Open()
			If NOT Ciclo.EOF Then ' se presente visualizzo

%>
[B][COLOR="#FF0000"]<p><a href="aggiornamenti_SYS.asp">Parifica le tabelle</a></p>[/COLOR][/B]
<table width="600" cellpadding="1" cellspacing="1" border="1" align="center">
<tr>
<td width="120">codice</td>

Crea un nuovo file e lo chiami "aggiornamenti_SYS.asp" che si occuoperà di parificare le informazioni:

Codice:
<%

' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' @@@@ CONNESSIONE AL DATA BASE
' @@@@ Versione ACCESS

'	strPath = "C:\inetpub\my-site\caprioli.info\fitness\script\aggiornamenti.mdb"
'	strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & strPath

	strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/aggiornamenti.mdb")
' @@@@ DB in sola lettura non presente in tutti i Comandi
' @@@@ Fine
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ INIZIO - FORM SELECT
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

	Set Ciclo = Server.CreateObject("ADODB.Recordset")
		Ciclo.ActiveConnection = strConnect
		Ciclo.Source = "SELECT * FROM prodotti " &_ 
						 "INNER JOIN statistica ON prodotti.prodotto=statistica.prodotto WHERE prodotti.prodotto=statistica.prodotto " &_ 
						 "ORDER BY prodotti.nomeprodotto;" 
		Ciclo.CursorType = 0
		Ciclo.CursorLocation = 2
		Ciclo.LockType = 1
		Ciclo.Open()
			If NOT Ciclo.EOF Then ' se presente visualizzo

					Ciclo_Min = 0
					Ciclo_Max = 999 ' massimo record estrapolati
				While ((Ciclo_Min <> Ciclo_Max) AND (NOT Ciclo.EOF))
				
						prodotto = (Ciclo.Fields.Item("prodotto").Value)
						nome_prodotto = (Ciclo.Fields.Item("Nomeprodotto").Value)
						statistica = (Ciclo.Fields.Item("totalestatistica").Value)
						
						
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' EFFETTUO AGGIORNAMENTO DB PARIFICANDO LE DUE TABELLE
						Set Rs = server.CreateObject ("ADODB.Connection")
							Rs.Open (strConnect)
							QuerySQL =  "UPDATE prodotti SET " &_
										"consumato = '"&statistica&"' " &_
										"WHERE " &_
										"prodotto = '"&prodotto&"'"
							Rs.Execute QuerySQL
						Set Rs = Nothing
' FINE AGGIORNAMENTO
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		
					Ciclo_Min = Ciclo_Min + 1
					Ciclo.MoveNext()
				Wend
%>
	<script language="javascript">
			alert("Informazioni aggiornate con successo!")
		location.replace("aggiornamenti.asp");
    </script>
<%

			End If ' chiudo controllo record
		Ciclo.Close
	Set Ciclo = Nothing ' chiudo il recordset

' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ FINE - FORM SELECT
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

%>

Link esempio: http://www.caprioli.info/fitness/script/aggiornamenti.asp

Buona serata.
 

GigiBena

Nuovo Utente
7 Apr 2013
12
0
1
Azioni su più tabelle contenute in un database

Buonasera
Sono ancora a disturbarti chiedendoti se è possibile eseguire la stessa procedura su DUE database distinti anziché sullo stesso database. La funzione deve COPIARE quando il confronto corrisponde”, il contenuto del campo totalestatistica della tabella statistica (database statistica.mdb), nel campo consumato della tabella prodotti. (database aggiornamenti.mdb),
Grazie anticipatamente
Gigi
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Buongiorno, ecco il codice che soddisfa le tue esigenze:

Codice:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%

' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' @@@@ CONNESSIONE AL DATA BASE aggiornamento.mdb
	strConnect1 = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("aggiornamenti.mdb")
' @@@@ CONNESSIONE AL DATA BASE statistica.mdb
	strConnect2 = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("statistica.mdb")
' @@@@ Fine
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ INIZIO - FORM SELECT
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

	Set Ciclo = Server.CreateObject("ADODB.Recordset")
		Ciclo.ActiveConnection = strConnect2
		Ciclo.Source = "SELECT * FROM statistica" 
		Ciclo.CursorType = 0
		Ciclo.CursorLocation = 2
		Ciclo.LockType = 1
		Ciclo.Open()
			If NOT Ciclo.EOF Then ' se presente visualizzo

					Ciclo_Min = 0
					Ciclo_Max = 999 ' massimo record estrapolati
				While ((Ciclo_Min <> Ciclo_Max) AND (NOT Ciclo.EOF))
				
						prodotto = (Ciclo.Fields.Item("prodotto").Value)
						totalestatistica = (Ciclo.Fields.Item("totalestatistica").Value)
						
						
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

				Set objRs = Server.CreateObject("ADODB.Recordset")
					strSQL = "SELECT * FROM prodotti WHERE prodotto = '"&prodotto&"' ;"
					objRs.Open strSQL, strConnect1
							If NOT objRs.EOF Then 
				
									id_prodotto = (objRs.Fields.Item("id").Value)
									
					' EFFETTUO AGGIORNAMENTO DB PARIFICANDO LE DUE TABELLE
										Set Rs = server.CreateObject ("ADODB.Connection")
											Rs.Open (strConnect1)
											QuerySQL =  "UPDATE prodotti SET " &_
														"consumato = '"&totalestatistica&"' " &_
														"WHERE " &_
														"id = "&id_prodotto
											Rs.Execute QuerySQL
										Set Rs = Nothing
					' FINE AGGIORNAMENTO
				
							End If
					objRs.Close
				Set objRs = Nothing

' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		
					Ciclo_Min = Ciclo_Min + 1
					Ciclo.MoveNext()
				Wend
%>
	<script language="javascript">
			alert("Informazioni aggiornate con successo!")
    </script>
<%

			End If ' chiudo controllo record
		Ciclo.Close
	Set Ciclo = Nothing ' chiudo il recordset

' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' ^^^^^^^ FINE - FORM SELECT
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

%>

Paolo
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [risolto] Ciclo di un array con azioni diverse PHP 26
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15

Discussioni simili