Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Mistero SqlServer

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    11

    Mistero SqlServer

    Se ho questo codice:

    sql = "Select * From CfWeb"
    rs.Open sql, Conn, 3, 3
    response.write rs("User")

    e lo eseguo mi scrive: A
    ciò significa che dentro la tabella CfWeb ho un campo di nome User la cui prima riga contiene il valore alfabetico A

    Bene. Se ho quest'altro codice:

    sql = "Select * From CfWeb Where User = 'A'"
    rs.Open sql, Conn, 3, 3
    response.write rs("User")

    e lo eseguo mi dice:
    ADODB.Field error '80020009'
    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    Sto impazzendo. Perchè si comporta in modo così bizzarro?

    Grazie a chi mi aiuterà
    Ciao
    Maxi

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    11
    Nessuno ha un'idea?
    Sembrerebbe un normale problema di sintassi. Eppure le ho provate tutte (apici, virgolette, chr(34)). Niente da fare.
    Non c'e' un'anima gentile?
    Ciao
    Maxi.

  3. #3
    Scusa io non conosco ASP ma è probabile che il comando rst("User") non restituisca il valore ma l'oggetto. Prova a recuperare il valore dalla propietà rst("User").value che è il metodo corretto visto che poi le propietà predefinite spariranno nelle prossime versioni sdk.
    Ciao.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    11
    In effetti c'è del vero in quel che dici. In altri tentativi mi restituiva un errore dove diceva che non trovava un oggetto di nome A. Ma che cos'è sdk?
    Ad ogni modo il problema mi è stato risolto dal provider. Sai cos'era? A differenza di Access, SqlServer non tollera la parola User, in quanto parola riservata. Incredibile!
    Grazie molte.
    Maxi

  5. #5
    Sicuro di non aver impostato il campo User di tipo Char?
    Questo tipo di campo è a lunghezza fissa e, impostandolo per es. a 10 caratteri e assegnando la voce "PIPPO", avrai come risultato:

    "PIPPO_____"

    Dove gli _ stanno per spazi.
    Quindi se cerchi "PIPPO" all'interno di esso, non lo troverai mai, perché il valore effettivo è "PIPPO_____" (con gli spazi).

    Per risolvere:
    1) o gli passi "PIPPO_____" come criterio di ricerca
    Select * From CfWeb Where User='A________'
    2) o vai con un RTRIM() (che elimina gli spazi da destra)
    Select * From CfWeb Where RTRIM(User)='A'
    3) o con un LIKE
    Select * From CfWeb Where User LIKE '%A'

    Fammi sapere

    PS. Ricorda: ho utilizzato _ per farti vedere gli spazi

  6. #6
    No SQL supporta il nome di campo USER soo che devi metterlo tra parentesi quadre all'interno delle queries in modo che non la prenda come parola chiave:

    ERRATO
    SELECT User, Password FROM tb_Utenti


    CORRRETTO
    SELECT [User], [Password] FROM tb_Utenti

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    11
    Innanzitutto grazie a tutti per l'interessamento.
    Il database da me utilizzato proviene da Access dove il campo era un testo di lunghezza 10. L'ho importato in SqlSqerver2000 con l'enterprise manager ed e' stato trasformato in nvarchar (sempre lungo 10).
    Quindi: campo lungo 10, a cui ho cambiato il nome in Uxer, funziona perfettamente anche quando il valore è 'A'.
    Mentre è interessante la faccenda delle parentesi quadre, che mi sembra un buon sistema per evitare di massacrare la struttura del db (non l'ho ancora provata, ma mi fido).
    Grazie a tutti e buon fine settimana.
    Maxi

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.