Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: doppio ciclo

  1. #1

    doppio ciclo

    ho due tabelle db
    tab1
    tab2

    devo aggiornare il campo codice
    della tabella 1 in base al confronto con i campi della tabella 2

    il mio ragionamento è stato:
    apro un record set della tabella 1 e inizio il ciclo
    per ogni record di tab1 apro un ciclo dei record della tab2 e verifico le condizioni
    in base al risultato aggiorno il campo della tab1 che mi serve

    il codice è questo:


    <%percorso="/mdb-database/db2.mdb"%>
    <%
    set cn=server.CreateObject ("ADODB.Connection")
    cn.connectionString="DRIVER={MICROSOFT ACCESS DRIVER (*.MDB)};"& "DBQ=" & SERVER.MapPath(percorso)
    cn.open cn

    strSql="Select * FROM tab1"
    set rs=cn.Execute(strSql)

    do while not rs.eof

    id=rs("id")
    campo1=rs("campo1")
    campo2=rs("campo2")
    codice=rs("codice")

    strSql2="Select * FROM tab2"
    set rs2=cn.Execute(strSql2)

    id_tab2=rs2("id")
    campo1_tab2=rs2("campo1")
    campo2_tab2=rs2("campo2")
    codice_tab2=rs2("codice")


    do while not rs2.eof
    if codice=codice_tab2 or campo2=campo2_tab2 then
    strSQL3="UPDATE tab1 SET " & _
    "codice='" &codice_tab2 & "'" & _
    " WHERE id="&id
    set rs=cn.Execute(strSql3)
    else



    codice="00"
    end if%>

    <% rs2.Movenext
    loop%>


    <% rs.Movenext
    loop%>

    ma non funziona dove sto sbagliando?
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  2. #2
    che potresti fare tutto con una semplice UPDATE JOIN....

  3. #3
    oddio

    come si fa.....?

    come ho fatto io mi dice che è impossibile riuscire ad eseguire l'ultimo movenext xchè l'oggetto è chiuso....ma non capisco
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  4. #4
    andiamo per gradi. riesci a fare una query SELECT per evidenziare i record che devi aggiornare?

  5. #5
    penso di si....

    la condizione che devo fare è questa

    se campo1_tab1=campo1_tab2 o campo2_tab1=campo2_tab2 allora

    inserisci il valore del codice contenuto in codice della tabella2 nel campo codice della tabella1

    per tutti i record

    nella tabella 1 il campo codice è al momento vuoto


    potrei avere 3 risultati
    campo1_tab1=campo1_tab2

    campo2_tab1=campo2_tab2

    se nessuna delle due condizioni è rispettata scrivo "00"
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  6. #6
    lascia perdere per il momento la parte di aggiornamento. scrivi la SELECT...JOIN

  7. #7
    la select potrebbe essere cosi?
    strSql="Select tab1.campo1,tab1.campo2,tab2.campo1,tab2.campo2,ta b2.codice FROM tab1 left join on tab1.campo1=tab2.campo1 or tab1.campo2=tab2.campo2"
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  8. #8
    scusa mi correggo
    strSql="Select tab1.campo1,tab1.campo2,tab2.campo1,tab2.campo2,ta b2.codice FROM tab1.id left join on tab2.id where tab1.campo1=tab2.campo1 or tab1.campo2=tab2.campo2"
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  9. #9
    faccio troppi errori

    l'ho corretta così ma niente:
    strSql="Select tab1.campo1,tab1.campo2,tab1.codice,tab2.campo1,ta b2.campo2,tab2.codice FROM tab1.id left join tab2.id=tab1.id ON tab2.id WHERE tab1.campo1=tab2.campo1 or tab1.campo2=tab2.campo2 GROUP BY tab1.campo1,tab1.campo2,tab1.codice,tab2.campo1,ta b2.campo2,tab2.codice"


    che p.....
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  10. #10
    3 tentativo:

    strSql="Select tab1.campo1,tab1.campo2,tab1.codice,tab2.campo1,ta b2.campo2,tab2.codice FROM tab1 left join tab2 ON tab2.id=tab1.id WHERE tab1.campo1=tab2.campo1 or tab1.campo2=tab2.campo2 GROUP BY tab1.campo1,tab1.campo2,tab1.codice,tab2.campo1,ta b2.campo2,tab2.codice"
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

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.