Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684

    Prezzo sempre uguale, invece deve essere diverso

    codice:
    idfilm = "1,5,8,23,78" ' questo è un esempio
    
    	'inserisco i codici dei film nella tabella dettaglio_ordini usando la variabile numerica IDORDINE come valore
    	'per il campo chiave ORDINE della tabella dettaglio_ordini
    	'sqldettaglio = "SELECT * FROM dettaglio_ordini"
    	sqldettaglio = "SELECT dettaglio_ordini.CODICEFILM, dettaglio_ordini.ORDINE, dettaglio_ordini.PREZZOFILM, film.PREZZO, film.IDFILM FROM dettaglio_ordini INNER JOIN film ON dettaglio_ordini.CODICEFILM = film.IDFILM"
    	
    	set rsdettaglio = Server.CreateObject("ADODB.Recordset")
    	rsdettaglio.Open sqldettaglio, conn ,3,3
    
    	codici = split(idfilm, ",")
    	FOR i = 0 TO UBOUND(codici)
    	rsdettaglio.addnew
    	rsdettaglio("codicefilm") = codici(i)
    	rsdettaglio("ordine") = idordine
    	rsdettaglio("prezzofilm") = rsdettaglio("prezzo")
    	rsdettaglio.update 
    	NEXT
    
    	rsdettaglio.close
    	set rsdettaglio = nothing
    Quando vado ad aggiungere un record alla tabella dettaglio_ordini, selezionata nella JOIN come prima tabella, il valore che viene memorizzato nel campo "PREZZOFILM" lo vado di volta in volta a prendere dalla seconda tabella "FILM" avente il campo chiave esterno "IDFILM" e il campo "PREZZO" settato a valuta valore standard.

    Mi inserisce, se l'array comprende 3 valori, sempre il prezzo del primo valore!!!

    Dove sbaglio? grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Per facilità ecco un riscontro visivo, della tabella "dettaglio_ordini" riempita:

    Valori della variabile IDFILM = "82,122,136"

    CODICE_FILM | ORDINE | PREZZOFILM
    ---------------------------------
    82 | 1 | 16,99 -> OK
    122 | 1 | 16,99 -> invece 17,99
    136 | 1 | 16,99 -> invece 17,99
    ---------------------------------
    num. intl | u. intl| valuta
    CHIAVE | chiave |

    No ho capito il motivo. Sto impazzendo..

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Sicuramente il problema è dovuto al ciclo per via dello split.

    Qualcuno potrebbe darmi una dritta?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Ho modificato così, ma il valore è nullo, mi lascia il campo ("PREZZOFILM") vuoto:
    codice:
    sqldettaglio = "SELECT dettaglio_ordini.CODICEFILM, dettaglio_ordini.ORDINE, dettaglio_ordini.PREZZOFILM, film.PREZZO, film.IDFILM FROM film INNER JOIN dettaglio_ordini ON film.IDFILM = dettaglio_ordini.CODICEFILM"
    	set rsdettaglio = Server.CreateObject("ADODB.Recordset")
    	rsdettaglio.Open sqldettaglio, conn ,3,3
    
    	codici = split(idfilm, ",")
    	FOR i = 0 TO UBOUND(codici)
    	rsdettaglio.addnew
    	rsdettaglio("codicefilm") = codici(i)
    	rsdettaglio("ordine") = idordine
    	rsdettaglio("prezzofilm") = rsdettaglio("prezzo")
    	'rsdettaglio("prezzofilm") = 17.99
    	rsdettaglio.update 
    	NEXT
    Se invece decommento il valore "17.99" mi inserisce per tutti quel valore... Perche rsdettaglio("prezzo") non mi recupera il prezzo di quel film?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Ho risolto cos':
    codice:
    sqldettaglio = "SELECT * FROM dettaglio_ordini"
            set rsdettaglio = Server.CreateObject("ADODB.Recordset")
    	rsdettaglio.Open sqldettaglio, conn ,3,3
    
    	codici = split(idfilm, ",")
    	FOR i = 0 TO UBOUND(codici)
    	rsdettaglio.addnew
    	rsdettaglio("codicefilm") = codici(i)
    	rsdettaglio("ordine") = idordine
    	rsdettaglio.update 
    	NEXT
    	
    	'rsdettaglio.close
    	'set rsdettaglio = nothing
    	
    	'set rsdettaglio = Server.CreateObject("ADODB.Recordset")
    	'rsdettaglio.Open sqldettaglio, conn ,3,3
    
    	'INSERISCO il costo per ogni film preso precedentemente ed assegnato alla variabile PREZZI
    	'e confronto l'idordine attuale con quello dell'ordine nel campo ORDINE della tabella dettaglio_ordini
    	
            prezzifilm = split(prezzi, ";")
    	rsdettaglio.moveFirst
    	FOR i = 0 TO UBOUND(prezzifilm)
    	IF rsdettaglio("ORDINE") = idordine THEN
    	rsdettaglio("prezzofilm") = prezzifilm(i)
    	rsdettaglio.update
    	rsdettaglio.movenext
    	END IF
    	NEXT
    
    	rsdettaglio.close
    	set rsdettaglio = nothing
    Risolto, il problema ora e' questo

    Avendo nella stringa "idfilm" valori così ordinati:
    195,136,82
    nel database vengono inseriti in ordine crescente:
    82 136 195

    Se chiudo il recordset e lo riapro con il ciclo per leggere l'array, inserisce esattamente i prezzi in questo modo:
    16,99 17,99 17,99
    il contenuto della variabile prezzi è il seguente:
    16,99;17,99;17,99

    Mentre se evito di chiudere e riaprire il recordset, ed uso .movefirst nel databse inserisce cosi:
    17,99 17,99 16,99

    le corrispondenze giuste sono:
    82 -> 16,99
    136 -> 17,99
    195 -> 17,99

    Vorrei risolvere inserendo i valori direttamente in fase di inserimento, ma non mi recupera i valori in access il capo "prezzofilm" resta vuoto:
    codice:
    codici = split(idfilm, ",")
    	FOR i = 0 TO UBOUND(codici)
    	rsdettaglio.addnew
    	rsdettaglio("codicefilm") = codici(i)
    	rsdettaglio("ordine") = idordine
    	rsdettaglio("prezzofilm") = rs("prezzo")
            rsdettaglio.update 
    	NEXT
    la query sql che uso è questa:
    codice:
    sqldettaglio = "SELECT dettaglio_ordini.CODICEFILM, dettaglio_ordini.ORDINE, dettaglio_ordini.PREZZOFILM, film.PREZZO, film.IDFILM FROM dettaglio_ordini INNER JOIN film ON dettaglio_ordini.CODICEFILM = film.IDFILM"
    sto impazzendo

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Non riesco a capire il motivo per cui non mi inserisce il valore... non mi preleva dalla JOIN il prezzo corrispondente dalla tabella film.


  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    VVoVe:

    Ripeto la situazione
    Due tabelle relazionate ->
    1° tab - FILM
    IDFILM chive contatore
    ...
    ...
    altri campi
    ...
    PREZZo

    2° tab - dettaglio_ordini
    CODICEFILM int. lung chiave
    ORDINE in lung. chiave
    PREZZOFILM = vuoto di default 0 'numero

    inserisco con un ciclo nella 2° tabella
    i dati nei campi 1 e 2, es:
    CODICEFILM contenuto in una stringa "idfilm" -> 1,5,8,3
    ORDINE = 1

    Ora vorrei inserire nel campo PREZZO della 2° tab. il prezzo corrispondente preso dalla 1° tabella.

    stavo pensando alla soluzione di una query SQL con UPDATE, ma come faccio a ricavarmi il prezzo di quell'IDFILM corrispondente e crearmi un ciclo?

    Datemi una mano perfavore, sto impazzendo da 2 gg.

    grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Risolto.. Bastava ragionarci ed il problema si risolveva in un altro modo semplicissimo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.