Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    condizione where tramite parametri

    Ho una tabella Access. Voglio estrarmi tutti i record con il valore di un campo, null. Ho provato ad utilizzare i parametri:
    codice:
            Dim con As OleDbConnection
            Dim comando As OleDbCommand
    
            con = New OleDbConnection(StringaConnessioneTest)
            con.Open()
            comando = New OleDbCommand("SELECT * FROM CAMPI WHERE [TESTO] = ?", con)
            comando.Parameters.Add("", OleDbType.VarChar, 50).Value = DBNull.Value
    
            Dim dt As DataTable = Libreria.GetDataTable(comando, comando.CommandText)
            PrintLn(dt.Rows.Count)
    
            con.Close()
    Bene, questo codice (dt.Rows.Count) mi dà sempre 0

    Cosa sbaglio?
    Pietro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    provato assegnando un nome al posto che con il ?

    comando = New OleDbCommand("SELECT * FROM CAMPI WHERE [TESTO] = @nome", con)
    comando.Parameters.Add("@nome", OleDbType.VarChar, 50).Value = DBNull.Value

    ps: cos'è PrintLn? :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: [ti sto pigliando per il ciulo]

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sms
    provato assegnando un nome al posto che con il ?

    comando = New OleDbCommand("SELECT * FROM CAMPI WHERE [TESTO] = @nome", con)
    comando.Parameters.Add("@nome", OleDbType.VarChar, 50).Value = DBNull.Value

    ps: cos'è PrintLn? :maLOL: :maLOL: :maLOL: [ti sto pigliando per il ciulo]
    codice:
    	'--------------------------------------------------------------
    	'Stampa una stringa con separatore riga
    	'--------------------------------------------------------------
    	Sub PrintLn(x) %>
    		<%=x%>
    
    <%	End Sub %>
    Ma la sai la risposta giusta? Su, non farti pregare
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da pietro09
    Ma la sai la risposta giusta? Su, non farti pregare
    hai provato mettendo @nome al posto di ?..
    anche se mi sembra strano

    provato mettendo
    comando.Parameters.Add("", OleDbType.VarChar, 50).Value = Nothing
    ?

  5. #5

    Re: condizione where tramite parametri

    Dovresti poter fare meglio con qualcosa di simile a
    comando = New OleDbCommand("SELECT * FROM CAMPI WHERE [TESTO] is Null", con)
    Saluti a tutti
    Riccardo

  6. #6
    Originariamente inviato da sms
    hai provato mettendo @nome al posto di ?..
    anche se mi sembra strano
    Il dataprovider oledb purtroppo non considera i parametri named cioe' chiamati per nome come invece succede ad es. con sqlclient. Per lui e' importante solo l'ordine con cui vengono assegnati al command che dovra' rispettare l'ordine con cui sono indicati nella query. Quindi qualcosa che nella query risulta "SELECT * FROM TABELLA WHERE CAMPO = ?" potra' avere una sintassi simile a ciccio.Parameters.Add("CAMPO", OleDb.OleDbType.VarChar).Value = "valore"
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da riccardone
    Il dataprovider oledb purtroppo non considera i parametri named cioe' chiamati per nome come invece succede ad es. con sqlclient. Per lui e' importante solo l'ordine con cui vengono assegnati al command che dovra' rispettare l'ordine con cui sono indicati nella query.
    grazie x la spiegazione

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Scusate se non ho capito: la query con parametri che ho fatto, funziona? dove sbaglio? :master:
    Pietro

  9. #9
    Originariamente inviato da pietro09
    Scusate se non ho capito: la query con parametri che ho fatto, funziona? dove sbaglio? :master:
    mi riquoto da solo
    Dovresti poter fare meglio con qualcosa di simile a

    comando = New OleDbCommand("SELECT * FROM CAMPI WHERE [TESTO] is Null", con)
    e anche
    ...qualcosa che nella query risulta "SELECT * FROM TABELLA WHERE CAMPO = ?" potra' avere una sintassi simile a ciccio.Parameters.Add("CAMPO", OleDb.OleDbType.VarChar).Value = "valore"
    Saluti a tutti
    Riccardo

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Deve essere il condizionatore che non funziona ma non capisco.

    La query *** where campo is null la conosco e funziona. Il mio problema è che vorrei utilizzare una query parametrizzata (se possibile).

    Allora, io prendo il campo per la condizione da un TextBox. Il suo valore lo passo ad una funzione che dà dbnull.value, se è una stringa vuota, altrimenti mi restituisce il campo stesso

    Aggiungo che non sono riuscito a farlo neanche dentro Access





    ho riunito il mio codice che non funziona col tuo: io non vedo differenze:
    codice:
    SELECT * FROM CAMPI WHERE [TESTO] = ?
    SELECT * FROM TABELLA WHERE CAMPO = ?
    
    comando.Parameters.Add("", OleDbType.VarChar, 50).Value = DBNull.Value
    ciccio.Parameters.Add("CAMPO", OleDb.OleDbType.VarChar).Value = "valore"
    Pietro

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.