Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Grosso problema select

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183

    Grosso problema select

    Ciao a tutti,
    non so se vi è mai capitato.

    Ecco la situazione
    inserisco dei dati
    prima di inserirli faccio una select per vedere se ce ne sono uguali
    se da risultato non mi da niente allora inserisco

    Il problema è che una volta funziona,l'altra no

    vi è mai capitato e cosa potrebbe essere??

    non so più su cosa agire

    grazie
    victor
    ----------------------

  2. #2
    Di solito quando e' possibile imposto nel database l'unicita' di una certa colonna e/o di piu' colonne. Per il resto, dovresti specificare meglio la o le routine che usi.
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183

    ti posto un pezzo di codice

    Questo è un pezzo del mio codice che a me sembra funzionare,
    il problema è che una volta va, quindi mi blocca, e quella successiva no. E' come se non rileggesse il tutto.
    Grazie


    dim objcmd_ver as new oledbcommand (" select * from allievi where numero_tessera = '"& numero_tessera_utente &"' ", objconn)
    dim read as oledbdatareader
    objconn.open
    read=objcmd_ver.executereader

    dim la_tessera as string
    dim il_nome as string
    dim il_cognome as string
    dim data_nascita as string
    dim anno_associazione as integer

    while read.read

    la_tessera=(read.getstring(1))
    il_nome=(read.getstring(2))
    il_cognome=(read.getstring(3))
    data_nascita=(read.getstring(6))
    anno_associazione=(read.getint32(17))

    end while
    read.close
    objcmd_ver.connection.close()

    response.Write(la_tessera & "
    ")
    response.Write(il_nome & "
    ")
    response.Write(il_cognome & "
    ")
    response.Write(data_nascita & "
    ")
    response.Write(anno_associazione & "
    ")

    if (la_tessera <> numero_tessera_utente) then
    inserisci2()
    else
    if (la_tessera = numero_tessera_utente and il_nome <> nome_utente or il_cognome <> cognome_utente or data_nascita <> data_di_nascita_utente) then
    messaggio.text="dati non corrispondenti all'id"


    else
    if (la_tessera = numero_tessera_utente and il_nome = nome_utente and il_cognome = cognome_utente and data_nascita = data_di_nascita_utente and anno_associazione = anno) then
    messaggio.text="utente già iscritto in questo anno"


    else
    if (la_tessera = numero_tessera_utente and il_nome = nome_utente and il_cognome = cognome_utente and data_nascita = data_di_nascita_utente and anno_associazione <> anno) then
    inserisci2()

    end if
    end if
    end if
    end if
    victor
    ----------------------

  4. #4
    Senza riuscire per questioni di tempo a decifrare il codice con tutti quei vari if ti consiglio comunque di utilizzare un piu' semplice
    codice:
    dim objcmd_ver as new oledbcommand ("select COUNT(*) from allievi where numero_tessera = .... 
    ...
    dim m_res as int = objcmd.executescalar
    dentro res hai un valore positivo se esitono uno o piu record altrimenti hai 0
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183
    grazie
    victor
    ----------------------

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183

    forse ho capito

    ciao riccardone,
    forse ho capito quale e il problema

    in questo modo

    while read.read

    var=(read.getstring(1))

    end while
    read.close
    objcmd_ver.connection.close()

    if (var ecccc....

    mi prende solo l'ultimo valore di var
    quindi quando faccio if valuto solo l'ulitmo

    hai qualche soluzione??

    grazie
    victor
    ----------------------

  7. #7

    Re: forse ho capito

    Originariamente inviato da victor8872
    mi prende solo l'ultimo valore di var
    quindi quando faccio if valuto solo l'ulitmo
    ma stai usando ancora un datareader per sapere se ci sono records? A parte la soluzione che ti avevo postato in precedenza e che e' piu' indicata, se proprio non riesci a fare a meno del datareader prova ad usare la sua funzione HasRows che restituisce true se c'e' una o piu' righe altrimenti false.
    Saluti a tutti
    Riccardo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183
    il problema è che devo vedere e confrontare molte cose...

    che ne pensi di questo??

    while read.read

    la_tessera=(read.getstring(1))
    s = s & "," & read.getstring(1).ToString()
    s = s.Substring(1, s.Length - 1)

    end while
    read.close
    objcmd_ver.connection.close()

    if (s = "" ) then
    messaggio.text="ok"
    inserisci2()

    else

    response.Write(s)
    messaggio.text="ATTENZIONE
    questo identificativo è già presente
    in questo anno"

    end if
    grazie mille
    victor
    ----------------------

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.