Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464

    Aggiornamento/Inserimento in doppio database

    Ciao ragazzi, vorrei chiedervi un aiuto e cioè:

    Ho 2 database, uno per gli UTENTI l'altro per la MAILINGLIST.
    Vorrei poter modificare anche l'indirizzo email nel database MAILINGLIST quando l'utente modifica l'indirizzo email nel database UTENTI.
    provo a fare così ma non va, sapete dirmi dove sbaglio?
    grazie in anticipo.


    codice:
    If UCase(EMail_Originale) <> UCase(EMail) Then
    Confermato = "False"
    'dichiarazione variabili
    Dim Connmailing, StrConnectmailing, SQLmailing, RSmailing, Mail
    
    'apro la connessione al db della Mailinglist
    Set Connmailing = Server.CreateObject("ADODB.Connection")
    StrConnectmailing = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & server.mappath("/mdb-database/MailingList.mdb") & ";Persist Security Info = False"
    Connmailing.open StrConnectmailing
    				
    'Controllo che non ci sia gia la stessa EMail
    SQLmailing = " SELECT Email FROM Mailing WHERE Email = '" & EMail_Originale & "' "
    Set RSmailing = Connmailing.Execute(SQLmailing)
    If Not RSmailing.EOF Then
    If EMail <> RSmailing("Email") Then
    
    'scrivo la query per inserire nome, cognome ed email degli utenti
    SQLmailing = " Insert INTO Mailing (Nome, Cognome, Email, Provincia) VALUES ('"& Nome &"', '"& Cognome &"','"& EMail &"','"& Provincia &"')"
    Set RSmailing = Connmailing.Execute(SQLmailing)			
    End if
    End if

  2. #2
    che vuol dire "non va"? ti restituisce un errore?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    no così facendo nessun errore ma cambiando l'indirizzo non mi fa l'inserimento anche nel database mailinglist.....

    questo in pratica è quasi lo stesso codice che ho messo anche al momento dell'iscrizione del cliente con il quale inserisce anche l'email e pochi altri dati nel database mailinglist ... funzionando correttamente....

    non riesco a capire perche non va.
    grazie

  4. #4
    controlla che la logica sia corretta

    codice:
    If UCase(EMail_Originale) <> UCase(EMail) Then
       Confermato = "False"
       'dichiarazione variabili
       Dim Connmailing, StrConnectmailing, SQLmailing, RSmailing, Mail
    
       'apro la connessione al db della Mailinglist
       Set Connmailing = Server.CreateObject("ADODB.Connection")
       StrConnectmailing = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & server.mappath("/mdb-database/MailingList.mdb") & ";Persist Security Info = False"
       Connmailing.open StrConnectmailing
    				
       'Controllo che non ci sia gia la stessa EMail
       SQLmailing = " SELECT Email FROM Mailing WHERE Email = '" & EMail_Originale & "' "
       Set RSmailing = Connmailing.Execute(SQLmailing)
       If Not RSmailing.EOF Then
          If EMail <> RSmailing("Email") Then
    
             'scrivo la query per inserire nome, cognome ed email degli utenti
             SQLmailing = " Insert INTO Mailing (Nome, Cognome, Email, Provincia) VALUES ('"& Nome &"', '"& Cognome &"','"& EMail &"','"& Provincia &"')"
             Set RSmailing = Connmailing.Execute(SQLmailing)			
          Else
             Response.write "EMail = RSmailing('Email')"
          End if
       Else
          Response.write "RSmailing.eof"
       End if
    Else
       Response.write "UCase(EMail_Originale) = UCase(EMail)"
    End If

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    non so, devo provare stasera praticamente perche in quella pagina c'è anche altro codice che deve continuare ad essere eseguito comunque...
    grazie ti farò sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    La cosa migliore è procedere per piccoli passi. Ho provato a lasciare il codice di partenza e funziona cioè se cambia l'email allora chiede di nuovo la conferma via posta e fin qui ci siamo.

    il codice originario è questo
    codice:
    	If ConfermaMail Then
    		If UCase(EMail_Originale) <> UCase(EMail) Then
    			Confermato = "False"
    		Else
    			confermato = "True"
    		End If
    	Else
    		Confermato = "True"
    	End If

    ora vorrei semplicemente aggiungere un altro If UCase in questo modo qui subito dopo:


    codice:
    If UCase(EMail_Originale) <> UCase(EMail) Then
    
    	'dichiarazione variabili
    	Dim Connmailing, StrConnectmailing, SQLmailing, RSmailing, Mail
    	
    	'apro la connessione al db della Mailinglist
    	Set Connmailing = Server.CreateObject("ADODB.Connection")
    	StrConnectmailing = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & server.mappath("/mdb-database/MailingList.mdb") & ";Persist Security Info = False"
    	Connmailing.open StrConnectmailing
    			
    	   'Controllo che non ci sia gia la stessa EMail
                    SQLmailing = " SELECT Email FROM Mailing WHERE Email = '" & EMail_Originale & "' "
                   Set RSmailing = Connmailing.Execute(SQLmailing)
                  If Not RSmailing.EOF Then
    
    	'scrivo la query per inserire nome, cognome ed email degli utenti
    	SQLmailing = " Insert INTO Mailing (Nome, Cognome, Email, Provincia) VALUES ('"& Nome &"', '"& Cognome &"','"& EMail &"','"& Provincia &"')"
    	Set RSmailing = Connmailing.Execute(SQLmailing)			
    	   End If	
             Else
       End If
    se l'email non esiste nel database mailinglist lo inserisce correttametne ma se esiste già ovviamente mi restituisce il messaggio di errore dicendo che non si può tentare di duplicare una chiave ecc ecc....

    credo che il problema allora risieda nella parte finale del codice cioè "ELSE" che alternativa gli posso dare se trova già una mail uguale?

  7. #7
    non capisco... se c'è già NON tentare di reinserire... ma non capisco dove sia il problema

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    Infatti non capisco perche non va. Ho rifatto tutte le prove e:

    se l'indirizzo email è nuovo lo inserisce anche nella mailinglist;
    se l'utente modifica solo altri dati e non cambia l'email modifica solo gli altri campi;
    se invece modifica l'indirizzo e quell'indirizzo nuovo che va ad inserire è già presente nel db mailinglist mi da l'errore di cui sotto.
    Questo è il codice:

    codice:
    If UCase(EMail_Originale) <> UCase(EMail) Then
    
    	'dichiarazione variabili
    	Dim Connmailing, StrConnectmailing, SQLmailing, RSmailing, Mail
    	
    	'apro la connessione al db della Mailinglist
    	Set Connmailing = Server.CreateObject("ADODB.Connection")
    	StrConnectmailing = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & server.mappath("/mdb-database/MailingList.mdb") & ";Persist Security Info = False"
    	Connmailing.open StrConnectmailing
    				
       'Controllo che non ci sia gia la stessa EMail
       SQLmailing = " SELECT Email FROM Mailing WHERE Email = '" & EMail_Originale & "' "
       Set RSmailing = Connmailing.Execute(SQLmailing)
       If Not RSmailing.EOF Then
    
    	'scrivo la query per inserire nome, cognome ed email degli utenti
    	SQLmailing = " Insert INTO Mailing (Nome, Cognome, Email, Provincia) VALUES ('"& Nome &"', '"& Cognome &"','"& EMail &"','"& Provincia &"')"
    	Set RSmailing = Connmailing.Execute(SQLmailing)			
       End If
       Else	
    End If
    e questo è l'errore:

    Microsoft JET Database Engine (0x80004005)
    L'apporto modifiche non è riuscito perché si è cercato di duplicare i valori nell'indice, nella chiave primaria o nella relazione. Modificare i dati nel campo o nei campi che contengono dati duplicati, rimuovere l'indice o ridefinire l'indice per consentire l'inserimento di voci duplicate, quindi ritentare l'operazione.
    update_utente.asp, line 99

    La linea 99 è questa:
    Set RSmailing = Connmailing.Execute(SQLmailing)

    In pratica devo dirgli che se l'indirizzo è già presente deve lasciar perdere...
    come faccio?
    grazie mille in anticipo

  9. #9
    scusa, ma quale è la chiave primaria della tabella mailing?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    464
    scusa mi son oespresso male, la chiave primaria è l'ID mentre il problema è che il campo email non ammette duplicati ed è qui che si ferma...
    thanks

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 © 2026 vBulletin Solutions, Inc. All rights reserved.