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

    problema aggiornamento database

    Ragazzi, vi spiego il problema. Ho un database con delle righe doppie(uguali).
    Voglio che ne rimanga una sola. Mi sapete dire dove sbaglio

    Prenotazione voli e biglietti aereo
    <%@LANGUAGE="VBSCRIPT"%>
    <% Option Explicit %>



    <%
    dim objRS, strSQL, hid, rowcount

    for hid="10126946" to hid="10227253"

    strSQL="SELECT ID,hotelId FROM descrizioni_hotel where hotelId="&hid&""
    Set objRS=Server.CreateObject("ADODB.Recordset")
    objRS.Open strSQL, objConn, adlockoptimistic, adcmdtable

    while not objRS.eof
    rowcount=rowcount+1
    if rowcount>1 then
    objRS.delete
    end if
    objRS.Movenext
    wend
    next

    objRS.Close (QUI MIDA L'ERRORE)
    Set objRS=Nothing

    objConn.Close
    Set objConn=Nothing
    %>

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    <%@LANGUAGE="VBSCRIPT"%> 
    <% Option Explicit %> 
     
     
    
    <% 
    dim objRS, strSQL, hid, rowcount 
    
    Set objRS=Server.CreateObject("ADODB.Recordset")   
    
    for hid="10126946" to hid="10227253" 
    
    strSQL="SELECT ID,hotelId FROM descrizioni_hotel where hotelId="&hid&"" 
    
    objRS.Open strSQL, objConn, adlockoptimistic, adcmdtable   
    
    while not objRS.eof 
    rowcount=rowcount+1 
    if rowcount>1 then 
    objRS.delete 
    end if 
    objRS.Movenext 
    wend 
    
    objRS.Close   
    
    next 
    
    Set objRS=Nothing   
    
    objConn.Close 
    Set objConn=Nothing 
    %>
    L'oggetto lo devi creare e distruggere una sola volta FUORI dal ciclo For/Next
    All'interno lo devi aprire e chiudere invece.

    PS: Non inserire nelle tue discussioni link che non hanno nulla a che vedere con l'aspetto tecnico della richiesta.
    Potrebbero essere confusi per spam ed allora sono guai.
    Grazie.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    31
    Abbi pazienza, credevo di aver risolto ma non va.
    La mia idea era questa: il select mi cerca tutte le righe che hanno un certo "hid". Se ce ne sono 2 di righe(rowcount=2) allora mi deve cancellare una riga.
    Che cosa succede: ho fatto delle prove: se metto manualmente il valore "hid" nel select funziona come dico io.
    Per evitare questo, prima del select metto un ciclo do while... loop in modo da rendere dinamico il select. Se faccio così non funziona più: mi cancella la seconda riga a partire dalla riga che ha hid=10126812(che ho fissato io come punto di partenza)

    A questo punto non ci capisco più niente. Datemi una mano!

    <%@LANGUAGE="VBSCRIPT"%>
    <% Option Explicit %>



    <%
    dim objRS, strSQL, hid, rowcount

    Set objRS=Server.CreateObject("ADODB.Recordset")

    hid=10126812
    do while hid<=10126899

    strSQL="SELECT ID,hotelId FROM descrizioni_hotel where hotelid="&hid&""

    objRS.Open strSQL, objConn, adlockoptimistic, adcmdtable

    while not objRS.eof
    rowcount=rowcount+1
    if rowcount=2 then
    objRS.delete
    end if

    objRS.Movenext
    wend

    objRS.Close
    hid=hid+1
    loop

    Set objRS=Nothing

    objConn.Close
    Set objConn=Nothing
    %>

  4. #4
    Azzera rowcount prima di while not:
    codice:
    rowcount = 0


    e poi, se ti basta un solo record per ogni hotelid, meglio
    codice:
    if rowcount>1 then
    anzichè
    codice:
    if rowcount=2 then
    Okkio però: in questo modo, se non azzeri il contatore prima del ciclo, cancelli tutti i records dopo il primo!

    E' nato www.lombardiamotori.it

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

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.