Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Records duplicati

  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Records duplicati

    Ho un problema con l'inserimento di alcuni dati tramite query in un dbase; praticamente quando registro o modifico un nuovo prodotto (record) faccio in modo che una parte dei dati vengano registrati anche in una seconda tabella dello stesso database.

    Il problema è che se nella prima tabella i dati vengono registrati o modificati in maniera corretta, nella seconda tabella invece succede che se il prodotto è nuovo mi registra due record:

    uno con un solo campo (titolo)
    l'altro con tutti i campi completi :master: questo il code:
    codice:
    RecordsetLinee.Close
    Set RecordsetLinee = Nothing
    case "articoli"
    IDLinea = request.querystring("idlinea")
    sqlquery = "select "
    sqlquery = sqlquery & "ID, "
    sqlquery = sqlquery & "Codice, "
    sqlquery = sqlquery & "Denominazione, "
    sqlquery = sqlquery & "InVendita "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Articoli] "
    sqlquery = sqlquery & "where "
    sqlquery = sqlquery & "IDLinea=" & IDLinea
    Set RecordsetArticoli = DatabaseWebStore.Execute(sqlquery)
    
    'inserisci dentro alla seconda tabella:
    
    strsqla = "INSERT INTO URLIndex (title, description, summary, keywords, url)" 
    strsqla = strsqla & " Values(" 
    strsqla = strsqla & "'" & (request.form("Denominazione")) & "', " 
    strsqla = strsqla & "'" & (request.form("Informazioniestese")) & "', "
    strsqla = strsqla & "'" & (request.form("Informazioni")) & "', "
    strsqla = strsqla & "'" & (request.form("Codice")) & "', "
    strsqla = strsqla & "'" & (request.form("Riferimentodifoto")) & "')" 
    response.write strsqla
    conn.execute(strsqla) 
    
    conn.close
    set conn = Nothing
    dove sbaglio?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Vedo un solo inserimento in una sola tabella.
    Stampa la query (e guarda cosa ti da).

    Roby

  3. #3
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie per rispondere.

    Allora al primo inserimento quando scrivo il nome del prodotto la query restituisce:
    codice:
    INSERT INTO URLIndex (title, description, summary, keywords, url) Values('mattone', '', '', '', '')
    quando passo alla maschera di dettaglio prodotti compilo i campi mancanti (il nome è già registrato nel form) restituisce:
    codice:
    INSERT INTO URLIndex (title, description, summary, keywords, url) Values('mattone', 'roma', 'internet', 'TCO99, 'Vibrant')
    per questo crea due records:

    il primo solo con il nome del prodotto 'mattone'
    il secondo con tutti i dettagli 'mattone', 'roma', 'internet', 'TCO99, 'Vibrant'

    :master:

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Quando passi alla maschera di dettaglio prodotti NON DEVI fare una INSERT INTO ma un UPDATE.
    Le soluzioni sono due:
    - passi tutte le informazioni alla fine (il "nome del prodotto" non lo inserisci subito ma lo passi come campo hidden nel passaggio), in modo da fare un solo inserimento;
    - fai il primo inserimento, recuperi l'id del record appena inserito ed in base a quello fai un UPDATE con i campi mancanti.

    La prima soluzione la preferisco.

    Roby

  5. #5
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    il problema è che il code è complicato (almeno per me) perchè è sviluppato con 'case'... pensavo fosse più facile adattarlo alle mie esigenze, provo a postarlo, non si sa mai:
    codice:
    <%
    Edit = request.querystring("edit")
    if Edit="" then Edit="linee"
    IDArticolo = request.querystring("idarticolo")
    IDLinea = request.querystring("idlinea")
    Action = request.form("action")
    if Action="Accedi" then
    Username = request.form("username")
    Password = request.form("password")
    if Username=UsernameDll and Password=PasswordDll then
    Session("PasswordOK")="ok"
    else
    Session("PasswordOK")=""
    end if
    end if
    if Session("PasswordOK")="" then%>
    <FORM ACTION="gestione_catalogo.asp" METHOD="POST">
    </FORM>
    <%else
    Session.LCID=1040
    Set DatabaseWebStore = Server.CreateObject("ADODB.Connection")
    DBString =""
    DBString = DBString + "Driver={Microsoft Access Driver (*.mdb)};"
    DBString = DBString + "Dbq=" & Server.MapPath("/mdb-database/webstore.mdb;")
    DBString = DBString + "Uid=Admin;"
    DBString = DBString + "Pwd=;"
    DatabaseWebStore.Open DBString
    select case Action
    case "Salva" 
    Item=request.form("Item")
    select case Item
    case "linea"
    IDLinea=request.form("IDLinea")
    sqlquery = "update "
    sqlquery = sqlquery & "[Catalogo, Linee] "
    sqlquery = sqlquery & "set "
    sqlquery = sqlquery & "Denominazione='" & raddoppiaapostrofi(request.form("Denominazione")) & "', "
    sqlquery = sqlquery & "Informazioni='" & raddoppiaapostrofi(request.form("Informazioni")) & "' "
    sqlquery = sqlquery & "where ID=" & request.form("IDLinea")
    MessaggioErrore=""
    if request.form("Denominazione")="" then MessaggioErrore = "Il campo ""descrizione"" non può essere vuoto. Le modifiche sono state annullate."
    if MessaggioErrore = "" then 
    DatabaseWebstore.execute sqlquery
    else
    Edit="editlinea"%>
    <font color="red" size=-1><%=MessaggioErrore%></font><%
    end if
    select case err
    case 0
    case else
    response.write "<font size=-1>" & err.description & "(" & err.number & ")</font>
    "
    Edit="editlinea"
    end select
    case "articolo"
    IDArticolo=request.form("IDArticolo")
    if request.form("InVendita")="ok" then InVendita=true
    sqlquery = "update "
    sqlquery = sqlquery & "[Catalogo, Articoli] "
    sqlquery = sqlquery & "set "
    sqlquery = sqlquery & "IDLinea='" & request.form("IDLinea") & "', "
    sqlquery = sqlquery & "Denominazione='" & raddoppiaapostrofi(request.form("Denominazione")) & "', "
    sqlquery = sqlquery & "Codice='" & raddoppiaapostrofi(request.form("Codice")) & "', "
    sqlquery = sqlquery & "Informazioni='" & raddoppiaapostrofi(request.form("Informazioni")) & "', "
    sqlquery = sqlquery & "InformazioniEstese='" & raddoppiaapostrofi(request.form("InformazioniEstese")) & "', "
    sqlquery = sqlquery & "Confezione='" & raddoppiaapostrofi(request.form("Confezione")) & "', "
    sqlquery = sqlquery & "Prezzo=" & replace(cstr(estrainumero(request.form("Prezzo"))), ",", ".") & ", "
    sqlquery = sqlquery & "RiferimentoDiIcona='" & raddoppiaapostrofi(request.form("RiferimentoDiIcona")) & "', "
    sqlquery = sqlquery & "RiferimentoDiFoto='" & raddoppiaapostrofi(request.form("RiferimentoDiFoto")) & "', "
    if InVendita then
    sqlquery = sqlquery & "InVendita=true "
    else
    sqlquery = sqlquery & "InVendita=false "
    end if
    sqlquery = sqlquery & "where ID=" & request.form("IDArticolo")
    MessaggioErrore=""
    if not isnumeric(request.form("Prezzo")) then MessaggioErrore = "Il campo ""prezzo"" deve contenere un importo valido. Le modifiche sono state annullate."
    if request.form("Denominazione")="" then MessaggioErrore = "Il campo ""descrizione"" non può essere vuoto. Le modifiche sono state annullate."
    if MessaggioErrore = "" then 
    DatabaseWebstore.execute sqlquery
    else
    Edit="editarticolo"%>
    <font color="red" size=-1><%=MessaggioErrore%></font>
    <%end if
    select case err
    case -2147217900
    %>  
    <font color="red">Il codice inserito esista già. Le modifiche sono state annullate.</font>
    <%
    Edit="editarticolo"
    case 0
    case else
    response.write err.description 
    Edit="editarticolo"
    end select
    end select
    case "Crea"
    Item=request.form("Item")
    select case Item
    case "linea"
    sqlquery = "insert into [Catalogo, Linee] "
    sqlquery = sqlquery & "(Denominazione) "
    sqlquery = sqlquery & "VALUES ("
    sqlquery = sqlquery & "'" & raddoppiaapostrofi(request.form("Denominazione")) & "'"
    sqlquery = sqlquery & ")"
    DatabaseWebStore.Execute(sqlquery)
    response.write err.description
    case "articolo"
    sqlquery = "insert into [Catalogo, Articoli] "
    sqlquery = sqlquery & "(Denominazione, IDLinea) "
    sqlquery = sqlquery & "VALUES ("
    sqlquery = sqlquery & "'" & raddoppiaapostrofi(request.form("Denominazione")) & "', "
    sqlquery = sqlquery & IDLinea
    sqlquery = sqlquery & ")"
    DatabaseWebStore.Execute(sqlquery)
    response.write err.description
    end select
    end select
    select case Edit
    case "eliminaarticolo"
    sqlquery = sqlquery & "DELETE * "
    sqlquery = sqlquery & "FROM "
    sqlquery = sqlquery & "[Catalogo, Articoli] "
    sqlquery = sqlquery & "WHERE "
    sqlquery = sqlquery & "ID=" & IDArticolo
    Set RecordsetLinee = DatabaseWebStore.Execute(sqlquery)
    Edit = "articoli"
    case "eliminalinea"
    sqlquery = sqlquery & "DELETE * "
    sqlquery = sqlquery & "FROM "
    sqlquery = sqlquery & "[Catalogo, Linee] "
    sqlquery = sqlquery & "WHERE "
    sqlquery = sqlquery & "ID=" & IDLinea
    Set RecordsetLinee = DatabaseWebStore.Execute(sqlquery)
    Edit = "linee"
    end select
    select case Edit
    case "linee"
    sqlquery = "select "
    sqlquery = sqlquery & "ID, "
    sqlquery = sqlquery & "Denominazione, "
    sqlquery = sqlquery & "Informazioni "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Linee]"
    Set RecordsetLinee = DatabaseWebStore.Execute(sqlquery)
    %>
    <FORM action="gestione_catalogo.asp" method="post">
    <%
    if err=0 then
    While Not RecordsetLinee.EOF
    IDLinea = RecordsetLinee("ID")
    Denominazione = RecordsetLinee("Denominazione")
    Informazioni = RecordsetLinee("Informazioni")
    %>
    <TR>
    <TD>
    <A HREF="gestione_catalogo.asp?edit=editlinea&idlinea=<%=IDLinea%>">
    <%=Denominazione%>
    </a>
    </TD>
    <TD>
    [img]icons/edit.gif[/img]
    </TD>
    <TD>
    [img]icons/folder.gif[/img]
    </TD>
    <TD>
    [img]icons/delete.gif[/img]
    </TD>
    </TR>
    <%
    RecordsetLinee.MoveNext
    Wend
    end if
    %>
    <%
    RecordsetLinee.Close
    Set RecordsetLinee = Nothing
    case "editlinea"
    sqlquery = "select "
    sqlquery = sqlquery & "ID, "
    sqlquery = sqlquery & "Denominazione, "
    sqlquery = sqlquery & "Informazioni "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Linee] "
    sqlquery = sqlquery & "where "
    sqlquery = sqlquery & "id=" & IDLinea
    Set RecordsetLinee = DatabaseWebStore.Execute(sqlquery)
    IDLinea = RecordsetLinee("ID")
    Denominazione = RecordsetLinee("Denominazione")
    Informazioni = RecordsetLinee("Informazioni")
    %>
    <FORM ACTION="gestione_catalogo.asp?edit=linee" & METHOD="POST">
    <%
    RecordsetLinee.Close
    Set RecordsetLinee = Nothing
    case "articoli"
    IDLinea = request.querystring("idlinea")
    sqlquery = "select "
    sqlquery = sqlquery & "ID, "
    sqlquery = sqlquery & "Codice, "
    sqlquery = sqlquery & "Denominazione, "
    sqlquery = sqlquery & "InVendita "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Articoli] "
    sqlquery = sqlquery & "where "
    sqlquery = sqlquery & "IDLinea=" & IDLinea
    Set RecordsetArticoli = DatabaseWebStore.Execute(sqlquery)
    'metti dentro al secondo database i campi: denominazione, informazioniestese, informazioni, riferimentodifoto 
    Set conn = Server.CreateObject("ADODB.Connection")
    OpenStra = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("/mdb-database/SiteSearch.mdb")
    conn.Open openStra
    
    strsqla = "INSERT INTO URLIndex (title, description, summary, keywords, url)" 
    strsqla = strsqla & " Values(" 
    strsqla = strsqla & "'" & (request.form("Denominazione")) & "', " 
    strsqla = strsqla & "'" & (request.form("Informazioniestese")) & "', "
    strsqla = strsqla & "'" & (request.form("Informazioni")) & "', "
    strsqla = strsqla & "'" & (request.form("Codice")) & "', "
    strsqla = strsqla & "'" & (request.form("Riferimentodifoto")) & "')" 
    response.write strsqla
    conn.execute(strsqla) 
    conn.close
    set conn = Nothing
    %>
    <FORM action="gestione_catalogo.asp?edit=articoli&IDLinea=<%=IDLinea%>" method="post">
    <%
    if err=0 then
    While Not RecordsetArticoli.EOF
    IDArticolo = RecordsetArticoli("ID")
    Codice = RecordsetArticoli("Codice")
    if isnull(Codice) then Codice =""
    Denominazione = RecordsetArticoli("Denominazione")
    InVendita = RecordsetArticoli("InVendita")
    %>
    <TR>
    <TD>
    <%if not InVendita then%>
    
    <%end if%>
    <%=Codice%>
    <%if not InVendita then%>
    
    <%end if%>
    </TD>
    <TD>
    <%if not InVendita then%>
    
    <%end if%>
    <%=Denominazione%>
    <%if not InVendita then%>
    
    <%end if%>
    </TD>
    <TD>
    [img]icons/edit.gif[/img]
    </TD>
    <TD>
    [img]icons/delete.gif[/img]
    </TD>
    </TR>
    <%
    RecordsetArticoli.MoveNext
    Wend
    end if
    %>
    <TR>
    <TD colspan=4><hr size=1></TD>
    </TR>
    <TR>
    <TD colspan=2>
    <INPUT name="Item" TYPE="hidden" value="articolo">
    <input tipe="text" maxlength=40 size=40 name="Denominazione" value="*Nuovo articolo in catalogo*">
    </TD>
    <TD colspan=2 align="center"><input type="submit" name="action" value="Crea"></TD>
    </TR>
    <TR>
    <TD colspan=4><hr size=1></TD>
    </TR>
    <TR><TD nowrap colspan=4 align="center">Torna all'elenco linee</TD></TR>
    </TABLE>
    </FORM>
    <%
    RecordsetArticoli.Close
    Set RecordsetArticoli = Nothing
    case "editarticolo"
    sqlquery = "select * "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Articoli] "
    sqlquery = sqlquery & "where "
    sqlquery = sqlquery & "id=" & IDArticolo
    Set RecordsetArticoli = DatabaseWebStore.Execute(sqlquery)
    IDLinea = RecordsetArticoli("IDLinea")
    Codice = RecordsetArticoli("Codice")
    Denominazione = RecordsetArticoli("Denominazione")
    Informazioni = RecordsetArticoli("Informazioni")
    InformazioniEstese = RecordsetArticoli("InformazioniEstese")
    Confezione = RecordsetArticoli("Confezione")
    Prezzo = RecordsetArticoli("Prezzo")
    RiferimentoDiIcona = RecordsetArticoli("RiferimentoDiIcona")
    RiferimentoDiFoto = RecordsetArticoli("RiferimentoDiFoto")
    InVendita = RecordsetArticoli("InVendita")
    %>
    <FORM ACTION="gestione_catalogo.asp?edit=articoli&IDLinea=<%=IDLinea%>" & METHOD="POST">
    <INPUT name="Item" TYPE="hidden" value="articolo">
    <INPUT name="IDArticolo" TYPE="hidden" value="<%=IDArticolo%>">
    <TABLE BORDER=0 CELLSPACING=3 CELLPADDING=3>
    <TR>
    <TD colspan=2 align=right><font size=+1>Modifica articolo</font></TD>
    </TR>
    <TR>
    <TD colspan=2><hr size=1></TD>
    </TR>
    <TR>
    <TD align=right valign=top>Linea:</TD>
    <TD><SELECT name="IDLinea">
    <%sqlquery = "select "
    sqlquery = sqlquery & "ID, "
    sqlquery = sqlquery & "Denominazione, "
    sqlquery = sqlquery & "Informazioni "
    sqlquery = sqlquery & "from "
    sqlquery = sqlquery & "[Catalogo, Linee]"
    Set RecordsetLinee = DatabaseWebStore.Execute(sqlquery)
    if err=0 then
    While Not RecordsetLinee.EOF
    ID = RecordsetLinee("ID")
    if ID = IDLinea then 
    response.write "<OPTION SELECTED VALUE=" & ID & ">"
    else
    response.write "<OPTION VALUE=" & ID & ">"
    end if
    response.write RecordsetLinee("Denominazione") & "</OPTION>"
    RecordsetLinee.movenext
    Wend
    end if
    RecordsetLinee.close
    set RecorsetLinee = nothing
    %>
    </SELECT>            
    <%
    RecordsetArticoli.close
    Set RecordsetArticoli = Nothing
    case "confermaeliminazionearticolo"%>
    <center>Elimino definitivamente l'articolo?
    
    SI
    NO
    </center>   
    <%
    case "confermaeliminazionelinea"%>
    <center>Elimino definitivamente la linea di catalogo e tutti gli articoli contenuti? 
    
    SI
    NO
    </center>   
    <%
    end select
    DatabaseWebStore.Close
    Set DatabaseWebStore = Nothing
    end if
    %>

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Così non ci fai nulla...
    E' chiaro che devi essere in grado di modificarlo. Postare tre km di script non serve a nessuno.
    Prendi qualcosa più alla tua portata per cominciare, mi sembra meglio.

    Roby

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.