2013-03-26 15 views
7

Devo creare una query compatibile per SQL Server e MS-Access.convertito int in varchar funzionante per SQL Server e MS-Access

Il problema è che in SQL Server provo a convertire un numero in varchar. In SQL Server posso effettuare la conversione in questo modo: convert(varchar(100), 5) in MS Access: CStr(5).

Ci sono possibilità di fare questo compatibile per entrambi i database?

risposta

5

In SQL Server, è possibile scrivere una funzione scalare definita dall'utente denominata CStr() che esegue la conversione.

Le routine incorporate sono incompatibili.

Sfortunatamente, questo non funzionerà davvero, perché è necessario anteporre la funzione a tutto il nome dello schema. Quindi, si può avere:

create function cstr(@val int) 
returns varchar(255) as 
begin return(cast(@val as varchar(255))) end; 

Ma bisogna chiamare come:

select dbo.cstr(4); 

Se il valore è in una colonna, poi non crei una vista sul tavolo, in ogni database, che fa la conversione nella vista.

Per consentire a VB di funzionare con Access e SQL Server, è possibile abbandonare Access e utilizzare un vero database. Oh, immagino che non sia una soluzione;) Avrai bisogno di identificare il tipo di database e avere un codice diverso per ognuno. Puoi minimizzare questo usando le viste per nascondere un po 'di bruttezza.

Potrebbe risultare vantaggioso passare a SQL Server 2012, che ha ampliato il proprio repertorio di funzioni per includere alcune funzioni di Access. Ma non cstr().

+0

il problema è che io uso questa query in VB e posso collegare una sql datebase o accesso –

+0

ok, ho capito che la ringrazio molto –

4

Siamo in grado di convertire il numero in varchar così:

select format(Adress_ID,'0') ... next code 

questo codice convertirà dalla entrambi, Access e SQL Server

Problemi correlati