Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Codice aggiorna inserisci dati

    Questo codice confronta e aggiorna i record presenti in due tabelle di due database diversi:

    codice:
    dim conn
    dim rs
    dim strconn
    dim strsqldo
    if (codice) <> (codice1) then 
    strsql = ""
    strconn = miaconn
    strSQL = "INSERT INTO ARTICOLI1 (articolo1, prezzo1, codice1, sconto1, descrizione1) VALUES ('"& articolo &"', '"& prezzo &"', "& codice &", '"& sconto &"', '"& descrizione & "')"
    set conn = server.createobject("adodb.connection")
    conn.open strconn
    conn.execute(strSQL)
    else
    strsql = ""
    strconn = miaconn
    strSQL = "UPDATE ARTICOLI1 SET articolo1='" & articolo & "',  prezzo1= '" & prezzo & "' ,  descrizione1= '" & descrizione & "',  sconto1= '" & sconto & "'WHERE codice1 = " & codice
    set conn = server.createobject("adodb.connection")
    conn.open strconn
    conn.execute(strSQL)
    end if
    conn.close
    set conn = nothing
    prova.movenext
    loop
    il codice funziona confrontando ed aggiornando solamente il primo record mentre gli altri, se aggiorno la pagina mi vengono inseriti nuovamente e quelli presenti non vengono aggiornati.

  2. #2
    Non può ciclare (quindi ripetere l'operazione) senza l'istruzione

    codice:
    do until prova.eof
    quello che non capisco è perchè non ti da' errore quando trova

    codice:
    loop
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Se invece l'istruzione che da' inizio al ciclo precede il codice che hai postato, bisogna vedere come viene popolato il recordset (che dovrebbe chiamarsi appunto "prova") e qial'è la condizione per eseguire il ciclo, per risolvere il problema...
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    Il ciclo lo esegue, se io nella tabella da aggiornare lascio un solo record questo viene eventualmente aggiornato e vengono inseriti tutti i record mancanti. Il preblema è come dicevo prima che se io aggiorno la pagina l' unico record corretto è il primo mentre tutti gli altri mi vengono inseriti nuovamente.

  5. #5
    Appunto: penso che vengano ciclati i record della prima tabella (infatti vengono aggiunti tutti) ma non quelli della seconda: di conseguenza confronta tutti quelli della prima SOLAMENTE CON IL PRIMO della seconda (e, naturalmente, trovandoli diversi, li aggiunge un'altra volta)...............
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    L' errore deve essere proprio nell' approcio iniziale.
    Ho fatto due rs del tipo SELEC * FROM MIATABELLA al primo DB ed uno identico con MIATABELLA1 al secondo DB, poi ho inserito il ciclo con il codice che ho postato in precedenza.

  7. #7
    Comunque sia, la procedura (una delle procedure possibili) per inserire o aggiornare i record in una tabella con tutti quelli presenti in un'altra è la seguente:

    - estrarre tutti i record della seconda (quella con i valori nuovi da inserire)
    - per ognuno di questi (qui comincia il ciclo):
    - fare una select sull'altra tabella estraendo il record che ha il codice uguale a quello del record corrente della prima tabella
    - se il recordset è vuoto (cioè se un record con quel codice non esiste) fai l'inserimento
    - se il recordset è popolato (cioè se quel record esiste) fai l'aggiornamento
    - fine ciclo: istruzione movenext - loop
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    Quindi non ti servono due cicli, ma uno solo (sulla tabella contenente i dati nuovi)
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  9. #9
    Un'ultimo piccolo suggerimento: crei e distruggi la connessione ad ogni ciclo, è meglio lasciare le istruzioni

    codice:
    set conn = server.createobject("adodb.connection")
    conn.open strconn
    e

    codice:
    conn.close
    set conn = nothing
    al di fuori del ciclo, creando e aprendo la connessione una sola volta all'inizio, e poi chiudendola e distruggendola una sola volta, alla fine

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  10. #10
    ho provato anche questo ma niente da fare:

    <%
    Dim objFile
    Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    If objFile.FileExists (Server.MapPath("/siti/aggdata/dati/prova.mdb")) Then
    Dim LocalConn
    Set LocalConn = Server.CreateObject("ADODB.Connection")
    LocalConn.ConnectionString="Provider=Microsoft.Jet .OLEDB.4.0;Data Source=C:\siti\aggdata\dati\prova.mdb"
    LocalConn.open

    pathdb = Request.ServerVariables("APPL_PHYSICAL_PATH") & "aggdata/dati/prova1.mdb"

    Session("ConnInfo")="Provider=Microsoft.Jet.OLEDB. 4.0;Data Source=" & pathdb

    Dim RemoteConn
    Set RemoteConn = Server.CreateObject("ADODB.Connection")
    RemoteConn.ConnectionString=Session("ConnInfo")
    RemoteConn.open

    SqlTmp = ""
    SqlTmp = SqlTmp & " select *"
    SqlTmp = SqlTmp & " from ARTICOLI"

    Set Localtable = LocalConn.Execute(SqlTmp)
    Do While Not Localtable.EOF

    SqlTmp = ""
    SqlTmp = SqlTmp & " select * "
    SqlTmp = SqlTmp & " from ARTICOLI1"
    SqlTmp = SqlTmp & " where codice1=" & LocalTable("codice")
    Set Remotetable = RemoteConn.Execute(SqlTmp)
    if Remotetable.EOF then

    Set TableInsert = Server.CreateObject("ADODB.Recordset")
    TableInsert.Open ARTICOLI1,RemoteConn,2,3,&H0002

    TableInsert.AddNew

    TableInsert("articolo1") = LocalTable("articolo")
    TableInsert("prezzo1") = LocalTable("prezzo")
    TableInsert("codice1") = LocalTable("codice")
    TableInsert("sconto1") = LocalTable("sconto")
    TableInsert("descrizione1") = LocalTable("descrizione")
    TableInsert.Update
    else
    if Remotetable("codice1") = LocalTable("codice") then
    SqlTmp = ""
    SqlTmp = SqlTmp & " update ARTICOLI1"
    SqlTmp = SqlTmp & " set articolo1 = '" & LocalTable("articolo") &"'"
    Set Remotetable = RemoteConn.Execute(SqlTmp)
    end if
    end if
    Localtable.Movenext

    Loop


    RemoteConn.Close
    Set RemoteConn = Nothing

    LocalConn.Close
    Set LocalConn = Nothing
    End If
    Set objFile = Nothing
    %>

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.