Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    SQL Server non gestisce il confronto dei tipi di dati NText, Text, Xml o Image

    Ciao a tutti,

    stò muovendo i primi passi su LINQ e devo dire che è molto semplice. Purtroppo però all'esecuzione di questa porzione di codice
    codice:
    Public Class frmClienti
        Private dpdc As New dominoproDataContext
        Private Sub frmClienti_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.CenterToScreen()
            Dim risultato = From tblCliente In dpdc.tblCliente Where tblCliente.ragione_sociale = "" Select tblCliente.ragione_sociale
            TblClienteBindingSource.DataSource = risultato
    
    
        End Sub
    End Class
    Mi dice: SQL Server non gestisce il confronto dei tipi di dati NText, Text, Xml o Image

    Ho guardato il sito MSDN per la risoluzione, ma non ci ho capito un'acca!!!! Come posso risolvere?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    Niente? Nessuno?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  3. #3
    continuo a fare prove ma non ci riesco. La porzione di codice è stata cambiata così:

    codice:
    Private Sub btnCercaRagioneSociale_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCercaRagioneSociale.Click
            Dim ragionesociale As System.String
            Dim dpdc As New dominoproDataContext
            ragionesociale = txtRagioneSociale.Text
            Try
                Dim risultato = From tblCliente In dpdc.tblCliente Where tblCliente.ragione_sociale = txtRagioneSociale.Text  Select tblCliente
                TblClienteDataGridView.DataSource = risultato
                txtRagioneSociale.Clear()
            Catch ex As Exception
                MsgBox("ERRORE! E' necessario inserire almeno un nome", MsgBoxStyle.Exclamation)
            End Try
        End Sub
    non c'è nessuno che sa come si fa una ricerca di testo in un database?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  4. #4
    Ciao!

    Per salvare le immagine, è necessario che tu metti un dato a Image.

    Poi utilizzi la OpenFileDialog per caricare una immagine. Quando carichi la immagine, inserisci questo codice:

    ImmaginePictureBox.Image.FromFile(OpenFileDialog1. FileName)
    'Carica l'immagine utilizzando il nome. In questo caso legge l'estensione e lo carica

    Se per caso ti da errore dop aver fatto un salvataggio, inserisci questo pezzo di codice:

    ' Crea una UpdateCommand.
    command = New SqlCommand( _
    "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
    "WHERE CustomerID = @oldCustomerID", connection)

    ' Aggiunge i parametri per l'UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")
    Dim parameter As SqlParameter = command.Parameters.Add( _
    "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.UpdateCommand = command


    ---

    se non funziona, deve centrare qualcosa il pulsante di salvataggio del database.

    Questo so, per altro (come NText o XMl) non so nulla.

    Se per caso mi spieghi il codice, forse ti trovo una soluzione.

    "Che differenza c'è tra un telescopio e una scarpa stretta? - Nessuna! Tutte due fanno vedere le stelle!"
    **********
    Homeworld 2, il gioco potente che ho mai incontrato!

  5. #5
    ciao,

    il codice che mi hai passato è indubbiamente utile, il problema è questo:

    io devo cercare, tramite una textbox, un cognome all'interno di una tabella. Quando vado ad inserire ad esempio rossi, mi viene generata l'eccezione oggetto del post.
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    Esistono le query per questo.


    E semplice!

    basta che vai sulla visualizzazione delle tabella in diagramma, aggiungi una query all DataAdapter, scegli leopzioni che preferisci e scrivi cosi:

    WHERE (NomeTabella.Rigatabella LIKE '%' + @nomerigatabella + '%')

    Allora?
    "Che differenza c'è tra un telescopio e una scarpa stretta? - Nessuna! Tutte due fanno vedere le stelle!"
    **********
    Homeworld 2, il gioco potente che ho mai incontrato!

  7. #7
    lo so che esistono le query. Ti faccio un riassunto completo: ho un DB sqlserver express creato direttamente da visual basic express 2008.
    All'interno di questo DB ho una tabella clienti strutturata in questa maniera:
    codice:
    idcliente: chiave primaria di tipo numerico. Identità
    ragionesociale: campo not null di tipo text
    piva: campo null di tipo integer
    cf: campo null di tipo text
    Per quanto riguarda VB2008 ho un form che si chiama frmClienti che contiene:

    - 1 datagridview: TblClienteDataGridView
    - 2 textbox: txtcodicecliente, txtragionesociale
    - 2 button: btnRicercaCodiceCliente, btnRicercaRagioneSociale
    - 1 classe linq: dominopro.dbml

    Ora, quando vado ad inserire un qualunque codice cliente, quindi un dato numerico la seguente porzione di codice:

    codice:
     
            Dim codicecliente As Integer
            Dim dpdc As New dominoproDataContext
            Try
                codicecliente = txtCodiceCliente.Text
                Dim risultato = From tblCliente In dpdc.tblCliente Where tblCliente.idcliente = codicecliente Select tblCliente
                TblClienteDataGridView.DataSource = risultato
                txtCodiceCliente.Clear()
            Catch ex As Exception
                MsgBox("ERRORE! E' necessario inserire almeno un codice", MsgBoxStyle.Exclamation)
            End Try
    Mi restituisce esattamente il cliente relativo al codice inserito, mentre se non inserisco nessun codice mi va in eccezione e restituisce il msgbox.
    La faccenda si complica quando mi trovo a dover cercare delle stringhe di testo, della serie "mario rossi".
    Il codice all'interno del btnCercaRagioneSociale è questo:

    codice:
    Dim dpdc As New dominoproDataContext
            Dim risultato As String
            Dim ragionesociale As String
            ragionesociale = txtRagioneSociale.Text
            Label1.Text = ragionesociale
            risultato = From tblCliente In dpdc.tblCliente Where tblCliente.ragione_sociale = ragionesociale Select tblCliente
            TblClienteDataGridView.DataSource = risultato
            txtRagioneSociale.Clear()
    Se lo mando in esecuzione ecco che compare il famoso errore oggetto del post. Ora, ho pensato di modificare il tipo di dato di ragione sociale, modificando il codice in questa maniera:

    codice:
    Dim risultato As System.Linq.IQueryable(Of DominoPRO.tblCliente)
    e così non genera l'errore, però non mi estrae i dati che mi interessano. Quindi, alla luce di tutto ciò, come faccio da codice a ricercare una stringa di testo contenuta nel DB e gestita tramite LINQ?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  8. #8
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Direi che di fondo hai scelto male il tipo di dati da utilizzare nella tua tabella: il tipo di dati text (e ntext) è particolare ed è fatto per memorizzare grandi (dove grandi vuol dire 2^31-1, cioè 2147483647 caratteri...quindi GRANDI ) porzioni di testo e per questo vengono gestite in maniera particolare

    Nel tuo caso per memorizzare una Ragione Sociale ed un Codice Fiscale ti bastano semplicemente dei varchar (per il codice fiscale bastano 16 caratteri, per la ragione sociale probabilmente qualcuno in più... metti varchar(100) e sei a posto...)

    Anche la partita iva definita integer non mi sembra una gran scelta; non ci devi mica fare le somme con le partite iva e se sono del tipo '00234' a te interessa che vengano memorizzate proprio così, non come '234'

    Usa anche in questo caso un varchar(30) (quanto lunghe possono essere le partite iva ?...)

    Fatto questo vedrai che le query verranno più semplici...

  9. #9
    Ciao a tutti,

    dopo aver modificato il tipo di dato finalmente ho risolto il problema!!!!! Ora funziona! Per la cronaca i codici fiscali sono composti da 16 caratteri, la partita iva è composta da 2 caratteri iniziali per l'uso extracomunitario e 11 cifre numeriche.
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  10. #10
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Prego

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.