Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250

    Problema -Controllo record null

    Salve a tutti .
    Ho un dubbio banale ma che mi blocca.
    ho creato una pagina asp e VBScript che deve connettersi a DBe fare alcune operazioni in base ad altre variabili ricevute tramite URL e tramite DB.

    Nello specifico quello che mi blocca é un banale if,
    Estraggo un dato da DB, se questo é già esistente non faccio nulla altrimenti avvio il contenuto dell'if ; (in JS non avrei problemi ma sono forzato a usare VBS )

    In particolare se provo con un record non esistente in DB mi viene restituito l'errore ( del browser ) : Tipo di errore:
    ADODB.Field (0x800A0BCD)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
    Il che implica che in effetti il record é vuoto ma anzi che procedere si pianta .
    Vi posto il codice :
    codice:
    ...  ... ...
    set rp = Cnz.Execute ("select * from Ud where uC=' "& act & "'")
    prova =rp("uC")
    
      IF (prova is null) THEN   // se il record é vuoto
              varcod = act
              data = Now()
            ...
            ...
            ...
            ...
    
       END IF
    
     %>
    sto sbagliando la sintassi dell'if , quale é quella giusta?

    Grazie in anticipo
    Evander

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    il problema è a monte... non testi se il recordset contiene qualcosa...
    codice:
    if not rp.EOF then
    ....
    ....
    end if
    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    Ciao Roby !


    Grazie infinite per il supporto .

    Ho provato, ma non sto ottenendo il risulato sperato,
    hio provato anche togliendo il NOt.

    Mettiamo la domanda in termini più generali . come faccio a eseguire un controllo if in base all'esistenza o meno di un certo record in DB tramite VBS?
    Evander

  4. #4
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    Originariamente inviato da EvanderIV
    ...
    Ho provato, ma non sto ottenendo il risulato sperato,
    ...
    cioè?
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    Ciao a entrambe e grazie per l'attenzione,
    scusate il ritardo nella risposta ma sono stato distratto da altro .
    La situazione é la seguente :

    in pratica cerco un record in db , se esiste già il sistema non deve fare nulla
    se non esiste deve inserirlo .

    Ho proceduto così seguendo le vostre indicazioni :
    codice:
    
    // per verifica esistenza codice in DB
    
             Set rp = Server.CreateObject("ADODB.Recordset")   
             set rp = Cnz.Execute ("select ud from Us where ud=' "& act & "'")
    
          if rp.EOF then
           
    
     // se non esiste in db un codice uguale a quello passato
    
     
          
              data = Now()
              Set Co = Server.CreateObject("ADODB.Connection")
              Co.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " &             
                         Server.MapPath("2003e.mdb"))
    
    
             Set rr = Server.CreateObject("ADODB.Recordset")
             qry= "insert into Us ([ud],[Data]) values ('" & act &"','" & data  &"')"
             set rr = Co.Execute (qry)
             Co.Close
             set co = nothing
       END IF
    END IF // so della ripetizione della connection
    Se mi comporto così il codice esegue l'insert indipendentemente dall'esistenza del record in db (probabilmente é il fuonzionamento previsto dalla mancanza del "not")
    Se inserisco il not come da voi suggerito non inserisce nulla , indipendentemente che il record esista o no .

    ho provato anche con quest'altra sintassi probabilmente errata :

    codice:
    if (IsNull (rp("ud")) ) then
    ...
    end if
    Suggerimenti ?
    Evander

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La INSERT devi farla semplicemente così:
    codice:
    qry= "insert into Us ([ud],[Data]) values ('" & act &"','" & data  &"')"
    Co.Execute (qry)
    Se entra in questa condizione

    if rp.EOF then

    vuol dire che il recordset riporta risultati.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    Ciao ! Grazie per l'aiuto !

    Ho modificato l'approccio alla insert .
    ma permane il problema dell'if :

    stando a quanto mi hai suggerito dovrei quindi usare giustamente :
    codice:
      if not rp.EOF then
    il fatto é che se lo uso non mi inserisce neanche i nuovi codici .....

    se tolgo il not per vedere che succede , li inserisce indipendentemente che siano nuovi o esistenti e non deve farlo in caso di codici già esistenti .

    Evander

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    No, devi lasciare questo

    if rp.EOF then

    il problema è che entra nell'IF sempre, quindi fatti stampare la query che cerchi di eseguire così controlli.

    Roby

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    ho provato a eseguire la query su access direttamente , fungono a dovere ....
    cmq ora ricontrollo .

    La mia prossima domanda é banale: ma perché non funge se valorizzo una variabile e vedeo se poi é vuota o nulla ?
    Evander

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    HO RISOLTOOOO!!!!!!!!!!
    non ci credo ! e tutto per una cavolata immane uno SPAZIO!!

    scusate per il disturbo arrecato ..nella query c'era uno spazio di troppo tra un 0 e ' ....

    Grazie comunque davvero !

    Evander

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.