Newsgroup: it.comp.appl.access
Titolo: Query che non funziona

Perchè se faccio eseguire questa query:
create table prova
(
IdUser integer,
Username varchar(80),
peso numeric(6,2)
)
l'assistente di Access mi dice che c'è un errore di sintassi nell'istruzione
CREATE TABLE,
invece se l'istruzione la cambio in:
create table prova
(
IdUser integer,
Username varchar(80),
peso decimal(6,2)
)
ottengo un errore di sintassi nella definzione del campo peso?
Felipe

 ha scritto nel messaggio
news:llU9b.102524$R32.3...@news2.tin.it...

Ciao Felipe
I tipi di dato decimal(x,y) o numeric(x,y)  sono equivalenti, se vuoi
utilizzarli nelle query di creazione tabella e se hai AccessXp devi
abilitare l'opzione "Sintassi compatibile SQL Server (ANSI92)" dal menu
Strumenti-->Opzioni-->Tabelle Query.
Attenzione !! le altre query potrebbero non funzionare correttamente, trovi
il tutto sul'help in linea.
Ciao Giorgio

 il tutto sul'help in linea.
L'help in linea, come ti dicevo, non mi funziona più. Ho provato a
disinstallare Office 2000, reinstallarlo con tutte le opzioni possibili, ma
continua a darmi l'help incompleto. In particolare, manca la parte sulle
query. Io ricordo che in Access 97 c'era la guida completa sulla sintassi
SQL compatibile con Access.
Felipe

 
[CUT]
Ciao Felipe
Ti rispondo da qui perchè il server tiscali delle News a quanto pare
non funziona.
Per eseguire la query di creazione tabella puoi utilizzare il metodo
Execute di CurrentProject.Connection
Esempio
================================
Sub CreaTabella()
Dim strSql As String
strSql = "create table prova " & _
         "(IdUser integer, " & _
         "Username varchar(80), " & _
         "peso numeric(6, 2))"
 
CurrentProject.Connection.Execute strSql
End Sub
================================
Questo metodo rispetta l'ansi Sql92 quindi puoi creare anche gli
indici e le relazioni.
Esempio
================================
Sub Crea_Tabelle_Referenziate()
Dim Sqltext As String
'Creo la prima trabella TbPrim
Sqltext = "CREATE TABLE TbPrim (" & _
          "KeyTbPrim int NOT NULL IDENTITY(1,1) PRIMARY KEY," & _
          "Nome text(50))"
CurrentProject.Connection.Execute Sqltext
'Creo la seconda tabella TbSec
Sqltext = "CREATE TABLE TbSec (" & _
          "Id_Record int NOT NULL IDENTITY(1,1) PRIMARY KEY," & _
          "KeyRefPrim int NOT NULL DEFAULT 0," & _
          "[Data] datetime," & _
          "Importo decimal(28,2) DEFAULT 0)"
CurrentProject.Connection.Execute Sqltext
'Creo il secondo indice
Sqltext = "CREATE INDEX TbSec_KeyRefPrim ON TbSec (KeyRefPrim)"
CurrentProject.Connection.Execute Sqltext
'Creo la referenza tra le tabelle
Sqltext = "ALTER TABLE Tbsec " & _
          "ADD CONSTRAINT FK_TbSec_TbPrim " & _
          "FOREIGN KEY (KeyRefPrim) " & _
          "REFERENCES TbPrim (KeyTbPrim) " & _
          "ON UPDATE CASCADE " & _
          "ON DELETE CASCADE "
 CurrentProject.Connection.Execute Sqltext
 'Se Vuoi eliminare la referenza (nel mio esempio) FK_TbSec_TbPrim
 'Sqltext = "ALTER TABLE Tbsec " & _
 '          "DROP CONSTRAINT FK_TbSec_TbPrim "
 'CurrentProject.Connection.Execute Sqltext
End Sub
================================
Ciao Giorgio

 ================================
Ciao Giorgio,
il problema è che sembra i tipi di dati numeric e decimal non esistono in
SQL per Access. Infatti l'errore di sintassi esce sempre quando uso questi
due tipi di dati. Vorrei avere una conferma della esistenza di questi due
tipi di dati. Su una vecchia guida di Access 97, si dice esplicitamente che
numeric e decimal non sono compatibili con l'SQL di Microsoft Jet Engine,
così come altri tipi di dai di SQL standard.
Qualcuno può confermare?
F.

 ha scritto nel messaggio
news:geiab.113217$R32.3...@news2.tin.it...

Ciao
Il tipo di dato DECIMAL(x,y) alias NUMERIC(x,y) è stato introdotto dalla
versione di Access2000 in avanti.
Puoi verificarlo dalla maschera struttura tabella, nei tipi di dati numerici
ora compare anche Decimal.
Ciao Giorgio.

 Ciao Giorgio.
In effetti, con l'esecuzione della procedura da te indicata, riesco a creare
la tabella. Ma allora, perchè non riesco a crearla facendo eseguire una
semplice query.
F.

 ha scritto nel messaggio
news:abAab.84108$hE5.2...@news1.tin.it...

Perchè la compatibilità Ansi 92  nella maschera di creazione query è stata
implementata nella versione di Access2002.
Ciao Giorgio.

Cerchiamo di quotare lo stretto indispensabile.
-- 
Gabriele Bertolucci
PBsoft 
www.pbsoft.it

 Ciao Giorgio.
Ok, grazie, mi hai tolto un dubbio. Io credevo che la mia versione di Access
non funzionasse.
F.