Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Tipologia delle colonne restituite da viste in SQL Server
mercoledì 23 settembre 2009 - 13.28
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
fantoccino
Profilo
| Newbie
17
messaggi | Data Invio:
mer 23 set 2009 - 13:28
Salve,
ho dei palmari Win Mobile 2003 in cui un programma in vb legge dei dati contenuti in un server con Sql Server 2000 con estensione CE.
Questi dati sono estratti tramite delle viste che lavorano sulle tabelle di un programma contabile.
Dovrei far funzionare questi palmari di cui NON posso toccare il software con tabelle provenienti da un’altra base dati. Per far questo ho ricreato le viste che restituisco le stesse colonne ma il problema è che non riesco a ottenere le stesso tipo di colonne.
Nelle specifico queste sono le colonne
Vista Originale
ANCODICE (char(15), Non Null)
ANDESCRI (char(40), Null)
Nuova Vista
ANCODICE (int, Non Null)
ANDESCRI (varchar(30), Non Null)
Il problema principale risiede nel campo chiave ANCODICE che il palmare si aspetta CHAR e Non Null. Come io utilizzo una funzione per trasformarlo lui diventa di tipo Null e nel palmare ricevo un errore durante l’indicizzazione perché non può utilizzarlo come chiave primaria in quanto Null.
Esiste una soluzione? Oppure l’unica possibilità è creare una tabella di appoggio intermedia le cui colonne abbiamo le caratteristiche desiderate e far leggere questa al palmare ??
Spero di essere stato chiaro
Grazie.
Rombino Cadino
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 23 set 2009 - 17:17
>Salve,
Ciao
>Spero di essere stato chiaro
Sinceramente non ho capito molto.
Tu hai un software su palmare che legge da un db sql server? che versione?
Legge direttamente da una tabella?
Prova a spiegarmi meglio..
>Grazie.
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
fantoccino
Profilo
| Newbie
17
messaggi | Data Invio:
mer 23 set 2009 - 19:17
Ciao,
allora ho un palmare con un programma vb che legge l'anagrafica clienti (e altro) da un server con Windows 2003 e SQL Server 2000 (Con l'estensione SQL Server CE)
Il palmare utilizza delle viste presenti nel db per ottenere i dati da alcune tabelle.
Devo cambiare la base dati da interrogare e per continuare a farlo funzionare ho riprodotto nel nuovo db le viste presenti nel vecchio db.
Il problema è che l'anagrafica clienti del vecchio db e del nuovo db hanno "tipo" di dati differenti e non riesco a fornire al palmare tramite le viste, i dati nella forma in cui se li aspetta.
Grazie.
Rombino Cadino
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 23 set 2009 - 21:07
>Il problema è che l'anagrafica clienti del vecchio db e del nuovo
>db hanno "tipo" di dati differenti e non riesco a fornire al
>palmare tramite le viste, i dati nella forma in cui se li aspetta.
Quello che non capisco, se usi le viste, è il discorso che fai sul null.
Se è per il tipo, credo sia sufficiente dare un alias e castare il campo da un tipo all'altro.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
fantoccino
Profilo
| Newbie
17
messaggi | Data Invio:
gio 24 set 2009 - 08:54
Alessandro,
grazie della pazienza, in effetti è più complicato da spiegare di quanto è in realtà.
Per la conversione da int a char in effetti posso usare CAST, ma il problema è che la vista originale mi restituiva il campo ANCODICE di tipo "Not Null" mentre la nuova vista utilizzando una qualsiasi funzione sul campo "int" per trasformarlo "char" lo fa diverntare di tipo "Null" e quando il palmare tenta di indicizzare i dati cosi ottenuti restituisce un errore di indicizzazione perche la chiave primaria ANCODICE NON è "Not Null".
Rombino Cadino
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 24 set 2009 - 11:25
>Per la conversione da int a char in effetti posso usare CAST,
>ma il problema è che la vista originale mi restituiva il campo
>ANCODICE di tipo "Not Null" mentre la nuova vista utilizzando
>una qualsiasi funzione sul campo "int" per trasformarlo "char"
>lo fa diverntare di tipo "Null" e quando il palmare tenta di
>indicizzare i dati cosi ottenuti restituisce un errore di indicizzazione
>perche la chiave primaria ANCODICE NON è "Not Null".
Not null o null non sono un tipo, sono un'opzione del campo. Un valore che un campo può contenere.
Se quella era chiave primaria, non vedo perchè la vista dovrebbe darti noie. L'indicizzazione non si fa sulla vista, ma sulla tabella, a meno che non sia una vista "salvata fisicamente" e quindi proprio INDICIZZATA.
Mi sembra un problema un po' strano. Se fai una vista, null o non null, a te non cambia nulla.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
fantoccino
Profilo
| Newbie
17
messaggi | Data Invio:
gio 24 set 2009 - 13:47
>Not null o null non sono un tipo, sono un'opzione del campo.
>Un valore che un campo può contenere.
>Se quella era chiave primaria, non vedo perchè la vista dovrebbe
>darti noie. L'indicizzazione non si fa sulla vista, ma sulla
>tabella, a meno che non sia una vista "salvata fisicamente" e
>quindi proprio INDICIZZATA.
>Mi sembra un problema un po' strano. Se fai una vista, null o
>non null, a te non cambia nulla.
Chiedo scusa nel termine. Hai ragione "null" è un'opzione non un tipo.
Il programma vb contenuto nel palmare (di cui io ho solo l'eseguibile) tramite Sql Server Compact Edition 2.0 utilizza le viste create nel DB del server
per recuperare l'elenco clienti e scaricarle nel suo database interno SDF
Come puoi vedere nel primo messaggio del thread la vista originale leggeva e restituiva il codice cliente da una tabella il cui campo ANCODICE era CHAR Not Null mentre la nuova vista legge i campi da un'altra tabella che ha il codice cliente INT Not Null.
Trasformando il campo da INT a CHAR la nuova vista mi restituisce il campo ANCODICE CHAR Null.
Il risultato è che se passo al palmare il campo ANCODICE Char Not Null funziona, se gli passo ANCODICE Char Null da un errore di indicizzazione delle tabelle interne perche si aspetta che la chiave primaria sia Not Null.
Probabilmente utilizzerà l'output della vista per creare la tabella interna nel palmare ma poi però non riesce ad indicizzarla.
Semplificando :
poi fare una semplice prova verificando le proprieta delle colonne restituite da una vista, ed ad un campo Not Null applicare una funzione: la sua opzione passera da Not Null a Null.
La mia domanda: è possible secondo te ottenere una vista che leggendo una campo int Not Null, restituisca un Char SEMPRE Not Null ???
Grazie.
Rombino Cadino
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 25 set 2009 - 14:14
>Semplificando :
>poi fare una semplice prova verificando le proprieta delle colonne
>restituite da una vista, ed ad un campo Not Null applicare una
>funzione: la sua opzione passera da Not Null a Null.
>La mia domanda: è possible secondo te ottenere una vista che
>leggendo una campo int Not Null, restituisca un Char SEMPRE Not
>Null ???
Scusa il ritardo ma sono stato molto indaffarato. Potresti postare il codice della vista? Secondo me hai il valore null su qualche riga..
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
fantoccino
Profilo
| Newbie
17
messaggi | Data Invio:
ven 25 set 2009 - 14:43
>Scusa il ritardo ma sono stato molto indaffarato.
E ti scusi pure dopo tutto il tempo che dedichi a questo forum? Ci mancherebbe....
Comunque visto che questo tread mi sembrava contorto anche come futura memoria ne ho aperto un altro qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=32473
dove nel frattempo ha risposto Lorenzo.
Chiedo scusa se ho creato confusione ma l'ho fatto considerando che un tread ben fatto rimane sempre una documentazione importante.
Continuaimo li? Posto li la vista.
Grazie.
Rombino Cadino
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 25 set 2009 - 14:47
>Continuaimo li? Posto li la vista.
sì, conviene che posti la vista
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !