Formattazione colonne

venerdì 05 dicembre 2008 - 14.23

alexmed Profilo | Guru

Ciao
Per una mia applicazione che svilupperò in VB.Net 2005 Express e SQL Express avrei bisogno di una tabella in cui vorrei che una colonna fosse la concatenazione di altre due.
Per poter comprendere i dati di questa colonna bisognerebbe formattarli.
Per esempio:

id_Colonna1 | id_Colonna2 | Colonna3

dove
id_Colonna1 è la chiave primaria autoincrementante;
id_Colonna2 è il collegamento ad un'altra tabella;
id_Colonna3 è la concatenazione delle due precedenti ovvero:

id_Colonna3 = id_Colonna2 & id_Colonna1

la tabella a cui fà riferimento id_Colonna2 è una tabella di descrizioni ma in fase di stampa vorrei vedere l'id della descrizione.
Come fare per riconoscere dove termina il codice descrizione ed inizia l'id_Colonna1?
Ho pensato, visto che non avrei più di una 50 di descrizioni, di dire: le prime tre cifre si riferiscono alla descrizione, ad esempio "001"
C'è un sistema per fare ciò direttemente nella tabella del db oppure sono costretto a formattare i dati a posteriori in VB??

Grazie
Alessandro

alx_81 Profilo | Guru

>Ciao
Ciao!

>Per una mia applicazione che svilupperò in VB.Net 2005 Express
>e SQL Express avrei bisogno di una tabella in cui vorrei che
>una colonna fosse la concatenazione di altre due.
Puoi fare una colonna calcolata la cui formula è data dalla concatenazione (in SQL con il +) degli altri due ID.
Considera che se gli altri due ID sono numerici devi utilizzare le funzioni di cast e convert per convertire il campo numerico in stringa (char, nchar, varchar, nvarchar) prima di concatenarli.
Personalmente ritengo anche che tu possa staccarti dal db e andare a fare l'operazione di formattazione direttamente in VB.Net.
E' una scelta che spetta a te.

>Come fare per riconoscere dove termina il codice descrizione ed inizia l'id_Colonna1?
Cosa significa? Puoi postare i contenuti delle tabelle affinchè io capisca questa domanda?
Prova a spiegarmi più in dettaglio cosa vuoi ottenere..

>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

alexmed Profilo | Guru

Ciao

per ora è tutto in fase di progettazione quindi per ora l'ho pensata così:
Due tabelle: Impianto e Tipologia

Tabella Impianto
id_Impianto, int, chiave primaria
id_Tipologia, int
id_Codice, (id_Tipologia + id_Impianto) <--- Domanda: ma se metto + non mi restituisce la somma?

Tabella Tipologia
id_Tipologia, int
Descrizione, nvarchar(50)

Prendiamo in esame due record possibili

id_Impianto = 34
id_Tipologia = 2

oppure
id_Impianto = 4
id_Tipologia = 23

In entrambi i casi avrei come concatenazione 234

Se invece formattassi avrei nel primo caso 002034 (002 & 034) nel secondo 023004 (023 & 004)
Quindi leggendo le prime 3 cifre so a cosa mi riferisco.

Ciao


alx_81 Profilo | Guru

>id_Codice, (id_Tipologia + id_Impianto) <--- Domanda: ma
>se metto + non mi restituisce la somma?
è il discorso della cast che ti dicevo prima

>In entrambi i casi avrei come concatenazione 234
ok, ho capito che ti serve.
Se vuoi farla come colonna calcolata devi mettere nella formula questa espressione:

Immagina di voler fillare a 5 zeri
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa è l'espressione che andrebbe sul campo ID_Codice, calcolato.
In alternativa potresti fare lo stesso ragionamento nell'application layer.
Anche qui devi fare una scelta tu.
--

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

alexmed Profilo | Guru

Ottimo direi
fermo restando che inserendo la tua formula in "Specifica formula calcolata" me l'ha modificata in:
(right('000'+CONVERT([varchar](10),[id_Tipologia],(0)),(3))+right('00000'+CONVERT([varchar](10),[id_Impianto],(0)),(5)))

quindi non più CAST ma CONVERT.
Probabilmente leggendo la guida capirò il perchè.

Grazie
Alessandro

alx_81 Profilo | Guru

>quindi non più CAST ma CONVERT.
il risultato è il medesimo quindi ok così
--

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
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 !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5