Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Collegare una View SQL in lettura/scrittura

35 views
Skip to first unread message

Matteo Barsotti

unread,
Mar 29, 2005, 3:31:43 AM3/29/05
to

Buongiorno e buona a tutto il ng!
Vi sottopongo un problemino:
Quando si collega via ODBC una tabella su un DB SQL Server/MSDE che non
ha una chiave primaria, access fa apparire un bel form con l'elenco dei
campi chiedendo quale deve usare come chiave. Altimenti sono in sola
lettura.
Fin qui tutto ok: basta creare le tabelle con la chiave primaria.
Creando però una vista (join su tabelle relazionabili - modificabile via
codice SQL) le cose si complicano perchè, se si cerca di collegare la
vista, access non riesce a capire qual'è la chiave primaria e appare il
form di cui sopra.

Se non si usa docmd.TransferDatabase ma il codice seguente la vista
collegata sarà in sola lettura (perchè non appare il form di richiesta
della PK).

Dim t As TableDef
Set t = DBEngine.Workspaces(0).Databases(0).CreateTableDef(NomeTabella)
t.SourceTableName = NomeTabella
t.Connect = "ODBC;DSN=" & DSN & ";UID=" & UserName & ";PWD=" & Password
t.attributes = dbAttachSavePWD
DBEngine.Workspaces(0).Databases(0).TableDefs.Append t
DBEngine.Workspaces(0).Databases(0).TableDefs.Refresh

Se fosse possibile dire ad access qual'è la primarykey via codice il
guaio sarebbe risolvibile...
Qualche idea?

Grazie.

Matteo Barsotti.

--

Matteo Barsotti
C.B.Sistemi
Tel. 041 976162
www.cbsistemi.it

giorgio rancati

unread,
Mar 29, 2005, 4:23:06 AM3/29/05
to

"Matteo Barsotti" <m.barsotti@cbsistemi_NO_SPAM_THANKS.it> ha scritto nel
messaggio news:d2b3pd$iq$1...@news.ngi.it...

Ciao Matteo,

puo sembrare strano ma il nome della colonna che funge da PK è una vera e
propria definizione di primary key nella tabella collegata.
Quindi in fondo al tuo codice metti
--------------
CurrentDb.Execute "ALTER TABLE " & Nometabella & _
" ADD CONSTRAINT __uniqueindex PRIMARY KEY (NomeCampo)"
--------------


Ciao Giorgio

Matteo Barsotti

unread,
Mar 29, 2005, 4:56:36 AM3/29/05
to
giorgio rancati ha scritto:

> puo sembrare strano ma il nome della colonna che funge da PK è una vera e
> propria definizione di primary key nella tabella collegata.
> Quindi in fondo al tuo codice metti
> --------------
> CurrentDb.Execute "ALTER TABLE " & Nometabella & _
> " ADD CONSTRAINT __uniqueindex PRIMARY KEY (NomeCampo)"
> --------------

Grande! Funziona.
In effetti è strano, ma a pensarci bene non così tanto... è il modo più
ovvio per dire ad Access quale campo chiave usare per creare le
istruzioni di modifica...

Grazie 1000
Ciao

0 new messages