Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di LupinI
    Registrato dal
    Jul 2008
    Messaggi
    52

    Impossibile assegnare NULL a cambo DB Numerico

    Provo a descrivere il mio problema.

    Ho due applicativi che accedono allo stesso database DB Access, il primo in VB6, il secondo in ASP

    Con VB6 nessun problema, ma con ASP Non riesco ad assegnare al campo di tipo Numerico il valore Null.

    Valorizzo la variabile Mailadress con il contenuto del form
    codice:
    Mailadress = Trim(Replace(Request.Form("Mailadress"), "'", "''"))
    
    'Se il form non è vuoto valorizzo la variabile Bolletta_mail con 1 altrimenti valorizzo con Null
    
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
      Bolletta_mail = 1
    Else
      Bolletta_mail = Null
    End If
    
    'Scrivo il campo nel DB.
    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail= '" & Bolletta_mail & "', "
    Questo script funziona solo nel primo caso, nel secondo caso, quando il Form è vuoto, va in errore.

    Di seguito la risposta del server:


    Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][Driver ODBC Microsoft Access] Tipi di dati non corrispondenti nell'espressione criterio.


    Qualcuno può aiutarmi?
    Ultima modifica di LupinI; 21-02-2018 a 19:43

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,657
    null devi trattarlo come numero

    ma in questo caso la query si aspetta un testo
    quindi non puoi mettere null, ma puoi rendere la variabile vuota

    lo trovo un po' contorto... perché utilizzi null?
    Ultima modifica di Vincent.Zeno; 21-02-2018 a 21:19

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
      Bolletta_mail = 1
    Else
      Bolletta_mail = "Null"
    End If
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,657
    @br1
    quindi dici che ci vuole scrivere proprio "null"

  5. #5
    Utente di HTML.it L'avatar di LupinI
    Registrato dal
    Jul 2008
    Messaggi
    52
    Come dicevo all'inizio sullo stesso database accedono sia l'app VB6 che lo script ASP.
    Mi necessita assegnare al campo db il null ovvero la funzione IsNull deve darmi come risultato TRUE.
    Non voglio scrivere "Null" anche perché non posso farlo dato che si tratta di un campo numerico.
    Non sto qui a spiegarvi il perché ma mi serve in alcuni casi assegnare quel valore al campo.
    Con VB6 ci riesco, con ASP no

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,657
    prova così:
    codice:
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
    	'Bolletta_mail = 1
    	varQueryBoll= " '1' "
    Else
    	'Bolletta_mail = Null
    	varQueryBoll= " null "
    End If
    
    
    'Scrivo il campo nel DB.
    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail= "& varQueryBoll &", "

  7. #7
    visto che il campo è numerico, da questa istruzione

    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail='" & Bolletta_mail & "',"
    devi togliere gli apici



  8. #8
    Utente di HTML.it L'avatar di LupinI
    Registrato dal
    Jul 2008
    Messaggi
    52
    Col tuo suggerimento funziona perfettamente, ti ringrazio infinitamente.
    Mi pare di capire che nel modo in cui gestivo lo script, il risultato dava una sintassi errata.

    Grazie comunque a tutti

    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    prova così:
    codice:
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
        'Bolletta_mail = 1
        varQueryBoll= " '1' "
    Else
        'Bolletta_mail = Null
        varQueryBoll= " null "
    End If
    
    
    'Scrivo il campo nel DB.
    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail= "& varQueryBoll &", "

  9. #9
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,657
    mi era sfuggito che il campo del db è numerico, quindi vale anche l'altra soluzione (anche meglio) proposta da optime:
    codice:
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
        Bolletta_mail = 1
    Else
        Bolletta_mail = Null
    End If
    
    
    'Scrivo il campo nel DB.
    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail= "& Bolletta_mail &", "

  10. #10
    Utente di HTML.it L'avatar di LupinI
    Registrato dal
    Jul 2008
    Messaggi
    52
    Per curiosità ho provato ma da errore sulla riga che scrive il database

    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    mi era sfuggito che il campo del db è numerico, quindi vale anche l'altra soluzione (anche meglio) proposta da optime:
    codice:
    If Len(Trim(Replace(Request.Form("Mailadress"), "'", "''"))) > 0 Then
        Bolletta_mail = 1
    Else
        Bolletta_mail = Null
    End If
    
    
    'Scrivo il campo nel DB.
    sqlUpdUtente = sqlUpdUtente & "Bolletta_mail= "& Bolletta_mail &", "

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 © 2024 vBulletin Solutions, Inc. All rights reserved.