2009-03-03 14 views
5

Ho scritto istruzioni SQL (memorizzate in un documento di testo) che caricano dati in un database SQL Server. Queste affermazioni devono essere ripetute ogni giorno. Alcune delle istruzioni utilizzano la funzione NewId() per popolare un campo con chiave nel database e questo funziona correttamente. Mentre sono in procinto di scrivere un'applicazione per replicare queste istruzioni, desidero utilizzare query e macro di Access invece di copiare e incollare query in SQL Server, risparmiando così tempo ogni giorno. Funziona tutto bene ma non riesco a trovare alcuna funzione che sostituirà la funzione SQL NewId(). Esiste o c'è un lavoro in giro? Sto usando SQL Server 2005 e Access 2007.Esiste un equivalente di Access della funzione NewId() di SQL Server?

+0

"query di copia e incolla in SQL Server, mi risparmio di tempo su base giornaliera". Potresti essere sorpreso di ciò che puoi fare in SQL Server per farti risparmiare tempo. I GUID –

risposta

-2

L'unica soluzione che posso pensare sarebbe quella di definire la colonna nel tuo database di accesso di tipo "ID di replica" e renderla un campo di numerazione automatica. Questo genererà automaticamente un GUID univoco per ogni riga e non sarà necessario utilizzare newid(). Nel server SQL, si dovrebbe semplicemente impostare il valore predefinito per la colonna "newid()".

+0

non funzionano correttamente in Access: http://trigeminal.com/usenet/usenet011.asp?1033. Ma non sono necessari - tutto ciò che è necessario è un numero automatico. –

+0

Oops - ha letto erroneamente la domanda originale (non si è reso conto che NewID() ha generato in modo specifico un GUID). Tuttavia, i GUID non funzionano ancora bene in Access. –

+1

perché GUID non funziona bene in Access ?? –

1

Oltre alla risposta di Matt, è possibile utilizzare semplicemente uno pass-through query e utilizzare semplicemente le query esistenti e funzionanti da MS Access.

-2

Ancora una volta, sembra esserci confusione qui.

Se ho la comprensione correttamente:

Hai front end Access.

Si dispone di un back-end di SQL Server 2005.

Quello che ti serve è la possibilità di generare il GUID nella tabella di SQL Server. Quindi, le risposte che suggeriscono di aggiungere un campo di tipo AutoNumber di tipo ReplicationID in Access non aiuteranno, poiché la tabella non è una tabella Jet, ma una tabella SQL Server.

SQL può essere eseguito come query passthrough, che passerà tutto a SQL Server per l'elaborazione, ma mi chiedo perché non esiste un valore predefinito per questo campo in SQL Server? Le tabelle di SQL Server 2005 non possono avere NewId() come valore predefinito? O c'è qualche altro metodo per avere un campo popolato con un nuovo GUID? Mi sembra di ricordare qualcosa sull'utilizzo dei GUID e sul loro contrassegno "non per la replica" (non ho accesso a un server SQL in questo momento per cercare questo).

A mio parere è meglio lasciare che il motore di database faccia questo genere di cose, piuttosto che eseguire una funzione nel tuo SQL per farlo, ma forse qualcuno può illuminarmi sul perché mi sbaglio su questo.

Problemi correlati