277 messaggi dal 03 ottobre 2006
Questo non so nemmeno se riesco a spiegarlo come problema.
Ho una tabella di sqlserver contenente 50000 record
Aggiungo una colonna e la mostro o la faccio modificare attraverso una formview della mia applicazione
Se provo a leggere il contenuto di un record ben preciso, mettendomi in debug passo passo, guardo il valore di quella colonna ed è valorizzato, ma appena arrivo ad una istruzione che assegna il valore di quella colonna ad un altra variabile mi da errore "null value reference exception"!!
Questo però non capita su tutti i record!!!
L'unica soluzione che risolve il problema ? lascio il codice inalterato, entro in modifica della formview che mostra la tabella, non cambio alcun valore, e salvo.... così poi funziona tutto!!!!
Se eseguo su SqlManagement Studio una istruzione del tipo "update tabella set colonna = 'qualsiasicosa'" da codice il problema resta!!!
Eppure quando salvo nella formview di fatto poi faccio un update identico...
Mi viene da pensare al fatto che la colonna è stata aggiunta di recente quindi la colpa può essere sull'indice della tabella ? Ho visto che ha una frammentazione del 4,75% che mi pare basso ma può essere che io debba fare qualcosa con l'indice ?
Non posso mica pensare di entrare in modifica di 50000 record e fare salva per risolvere...
Premesso che sono un po' arruginito, ma se non ricordo male, se aggiungi una colonna ad una tabella esistente, questa verra' inserita con dei valori null sulle singole righe della tabella stessa.
quindi, nella query che analizza la tabella dovresti mettere al posto di "select campo"
"select isnull(campo???.)"
Purtroppo non ricordo la sintassi esatta, ma la trovi facilmente nell'Help

Spero di esserti stato utile e, soprattutto, di ricordare esattamente.

Ciao

Alberto
277 messaggi dal 03 ottobre 2006
La select che faccio per mostrare i dati in una formview funziona sempre e anche il relativo update tanto e' vero che grazie a questa accoppiata di eventi risolvo il problema ma non posso farlo su 50000 record
In un altra parte del codice faccio la stessa select per leggere un singolo record (come faccio per popolare la formview) ma questa volta assegno il valore di una colonna ad una variabile e qui ricevo il null reference exception.
Precedendo in debug passo passo quella colonna non e' null anzi,
Vedo il valore corretto eppure mi da errore.
Faccio anche il controllo
If(string.isnullorempty(colonna)) oppure if(colonna!="") ma niente...
Sembra che perda il riferimento della colonna...
135 messaggi dal 01 febbraio 2017
Sembrerebbe un dato nullo nel db, oppure che nn corrisponde al tipo di dato che si aspetta ... spiega meglio o metti un poco di codice, per capire meglio.
Può essere che il tipo di dato che è memorizzato nella colonna non corrisponde col tipo di dato che si aspetta, magari in debug è più 'elastico' e te ne fa vedere il valore ...
Vai ...

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
277 messaggi dal 03 ottobre 2006
Penso di aver risolto anche se per ora non ho tempo di capire perchè...
Io usavo istruzioni come questa nella query che caricava il record nella mia classe sia per la formview (dove funzionava perfettamente) sia per l'istruzione che mi dava poi errore

item.Banca = reader["Banca"] as string;

Ho cambiato questa con

if (reader["Banca"] == null)
item.Banca= "";
else
item.Banca= reader["Banca"].ToString();

e così pare che anche la mia istruzione che semplicemente assegnava ad una string il valore di Banca funzioni.
Posso solo pensare per il momento che sia una necessità dovuta al fatto che la colonna banca l'ho aggiunta da poco... mah...
Comunque grazie mille

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.