PDA

Visualizza la versione completa : Creare tabelle da VB


andfer
06-09-2002, 15:12
Ciao a tutti.
Ho questo problema, da codice devo creare una tabella in un archivio access97, solo che i tipi dei campi che crea non mi vanno bene.
Cosa posso fare ?

Questo è il codice SQL che uso:

Set db = OpenDatabase(nomeDB)

gstrSQL = SELECT Descrizione.Descrizione, Sum(Descrizione.Quantità) AS somme INTO statistiche
FROM Descrizione GROUP BY Descrizione.Descrizione

db.Execute (gstrSQL)
db.Close

Praticamente sommo le descrizioni simili e le metto nella tabella statistiche.

Il campo somma che crea è un double e ha me serve una valuta.

Grazie

darkblOOd
06-09-2002, 16:01
Originariamente inviato da andfer
Ciao a tutti.
Ho questo problema, da codice devo creare una tabella in un archivio access97, solo che i tipi dei campi che crea non mi vanno bene.
Cosa posso fare ?

Questo è il codice SQL che uso:

Set db = OpenDatabase(nomeDB)

gstrSQL = SELECT Descrizione.Descrizione, Sum(Descrizione.Quantità) AS somme INTO statistiche
FROM Descrizione GROUP BY Descrizione.Descrizione

db.Execute (gstrSQL)
db.Close

Praticamente sommo le descrizioni simili e le metto nella tabella statistiche.

Il campo somma che crea è un double e ha me serve una valuta.

Grazie

A) così non stai creando nessuna tabella, stai solo inserendo il risultato di una query in una tabella esistente

B) il cmapo ti viene double? E perchè? Forse perchè il campo quantità l'hai definito double (e quindi ti fa una somma di double) oppure hai definito il campo della tabella in cui vai a scrivere come double?

:ciauz:

andfer
06-09-2002, 16:54
E invece è proprio cosi.
Con questa istruzione "db.Execute (gstrSQL) " crea la tabella, non so nemmeno io il xkè !!!

Il campo Descrizione.Quantita invece è un single.

Il mio vero problema xo è un altro, e sto tentando di aggirarlo.
Praticamente alla fine di questa operazione di raggruppamento i valori in "somme" hanno + posizioni decimali !?!?!? Anche se in quantità sono tutti con al max 2 decimali !!!

Tentavo di forzare l'operazione di arrotondamento tramite la valuta che ha gia al max 2 decimali...:dhò:

darkblOOd
06-09-2002, 17:14
cerca info sulla sintassi SQL "CREATE TABLE" e vedi che ti permette di specificare il tipo di dati del campo e tutto il resto.

steno12
06-09-2002, 19:00
Si giusto puoi fare anche come hai fatto:
comunque............

campo1 = "IDAntiquario"
campo2 = "OggettoRicercato"
campo3 = "Prezzo"

strSQL = "CREATE TABLE Ordini (" & campo1 & " INTEGER NOT NULL , " & campo2 & " CHAR(40) NOT NULL)"

DoEvents
dbConn.Execute strSQL



link
homepage
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/%69%6ed%65%78%2e%61%73%70
software
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/programmi/programmi.html
forum
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/public/twforum/default.asp

andfer
09-09-2002, 09:40
Grazie mille, approfitto di voi per farvi un altro quesito.

Per controllare che la tabella sia gia esistente ???

Io apro un recordset con il nome della tabella e gestico l'errore, ma penso ci sia un modo più elegante di fare cio.
:confused:

steno12
09-09-2002, 09:55
fai così:




Public Function esiste_tabella(nome_tab As String, _
Optional nome_dbs) As Boolean
'Autore: Lbo
'Accetta:
' nome_tab = nome della tabella da cercare
' nome_dbs = [Opz.] percorso+nome del database in cui cercare
'Restituisce: true se la tabella esiste
Dim dbs As Database
Dim tdf As TableDef
If IsMissing(nome_dbs) Then
nome_dbs = CurrentDb.Name
End If
Set dbs = DBEngine.Workspaces(0).Databases(nome_dbs)
For Each tdf In dbs.TableDefs
If tdf.Name = nome_tab Then
esiste_tabella = True
Exit Function
End If
Next tdf
esiste_tabella = False
End Function




link
homepage
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/%69%6ed%65%78%2e%61%73%70
software
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/programmi/programmi.html
forum
http://%77%77%77%2e%74%77%6f%72%6b%2e%69t/public/twforum/default.asp

andfer
09-09-2002, 10:23
Grazie duemila !!!:D

CMq mi devi spiegare xkè hai voluto mettere nei tuoi link i codici ASCII dei caratteri ?!?!:confused: :eek:

Bo????

Di nuovo grazie:tongue:

steno12
09-09-2002, 10:34
perchè se metto in lettere si vedono solo ************************************************** *
sono stato bannato da questo forum e non ho mai capito il perchè!!!!!!!!!!!!!!..............mha!!!!!!

cough...! cough...!

andfer
19-09-2002, 09:25
SOno ancora io, sto provando la funzione per controllare la presenza della tabella, ma ho u problema.

Su questa istruzione :

Set dbs = DBEngine.Workspaces(0).Databases(nome_dbs)

ricevo un errore: "elemento non trovato in questo insieme"
il numero dell'errore è 3265 e l'help di riferimento è jeterr35.hlp, mentre la sorgente dell'errore è DAO database .

L'archivio è un DB Access97.

Ke posso fare ?:confused:

Loading