Newsgroup: it.comp.appl.access
Titolo: query di creazione tabella su altro database

 Aiuto a tutti!
  Dovrei ad ogni chiusura annuale, archiviare i dati relativi su altro
database.
Ho questo tipo di sql:
 SELECT TArchivio.Data, TArchivio.Dipendente, TArchivio.Turno,
TArchivio.Dalle, TArchivio.Alle, TArchivio.TotaleOre INTO Anno1 IN
'C:\VFSOFT Turnazione del Personale\ArchivioStorico.mdb'
FROM TArchivio
WHERE (((TArchivio.Data) Like "*2004*"))
ORDER BY TArchivio.Data, TArchivio.Dipendente, TArchivio.Dalle;
Con questo tipo pero' devo predisporre una query per ogni tabella che
intendo crare su altro database.
Potrei averne una sola che mi chiede i criteri al momento dell'esecuzione?
Per intendersi, vorrei che al momento dell'esecuzione la query mi chiedesse
il nome da dare alla tabella e l'anno a cui si fa riferimento.
Grazie a tutti
Ciao Fabrizio
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


In un pulsante:
Dim Db As DAO.Database
Dim NomeFile as string
Dim anno as integer
Set Db = CurrentDb
anno = inputbox("Digita l'anno")
NomeFile = inputBox("Digita il percroso")
Db.Execute "SELECT TArchivio.Data, TArchivio.Dipendente, TArchivio.Turno,
 TArchivio.Dalle, TArchivio.Alle, TArchivio.TotaleOre INTO Anno1 IN
 '" & NomeFile & "'  FROM TArchivio  WHERE (((TArchivio.Data) Like '*" & 
anno & "*'))
 ORDER BY TArchivio.Data, TArchivio.Dipendente, 
TArchivio.DalleMe.TxtCatalogo
Di fatto quello che ti ho fatto fare è creare un sql parametrico con due 
variabili, questa potrebbe essere una strada.
ah, il like sull'anno non mi entusiasma, se il campo è di tipo data, io 
farei piuttosto
"select .... where year(data) = " & anno & " order by ...
Ciao,
Massimo 


  Grazie Massimo,
ho notato però che inserendo nella condizione WHERE
(((TArchivio.Data)=[Digitare il Periodo] - se nel settore richiesto
inserisco per esempio 2004, il risultato all'interno della tabella creata su
altro database autonominata Anno1, presenta i dati corretti. Ora, esiste un
sistema simile per INTO Anno1 IN, dove il nome da utilizzare per la tabella
mi venga richiesto (altrimenti prende il nome Anno1in automatico), e che io
ogni fine anno al momento di eseguire la query, all'interno dell'MDB
archivio, si creino tabelle con nome e dati diversi in rapporto a quelli che
mi sono stati richiesti al momento di eseguire la query?
Grazie ancora


 Mi correggo:
Se esiste un sistema per nominare la tabella esterna con una box chi mi
chieda il nome da attribuire al momento che eseguo la query, simile al
"Digitare il periodo" che ho usato.
Ho provato a sostituire Anno1 con = e un miliardo di altre cose ma niente.
Grazie Ciao


 Grazie Ciao
Allora, ripeto, lo puoi fare con Vba, costruendo la stringa sql in questo 
modo.
inserisci il tutto in un pulsante di comando.
Dim db As DAO.Database
Dim nometbl As String
nometbl = inputbox("Che nome vuoi dare?")
Set db = CurrentDb
'QUELLO IN MAIUSCOLO E' QUELLO CHE DEVI MODIFICARE, ADATTANDOLO ALLE TUE 
ESIGENZE
db.Execute "select CAMPO1, CAMPO2, CAMPO3 into " & nometbl & " in 
'C:\TUACARTELLA\TUOFILE.mdb' from NOMETABELLA"
Prova e vedrai che funziona.
Ciao,
Massimo


   Grazie Massimo,
molto esauriente, proverņ come dici.
A questo punto, vista la tua disponibilitą, quando sarņ riuscito a far
funzionare quella query, dimmi se č possibile con una sola maschera, nel db
principale, poter richiamare il contenuto di tabelle diverse che ho potuto
creare con la tua funzione sul db Archivio esterno. Se č possibile sono a
posto!
Grazie ancora.



 Massimo,
Scusa se sono un po' "tosto", ma ho sritto questo:
 Option Explicit
=====================================================
Private Sub Comando3_Click()
Dim db As DAO.Database
Dim nometbl As String
nometbl = InputBox("Digitare il periodo")
Set db = CurrentDb
db.Execute "select TArchivio.Data, TArchivio.Dipendente, TArchivio.Turno,
TArchivio. Dalle, TArchivio.Alle into " & nometbl & " in "
'C:\VFSOFT Turnazione del Personale\ArchivioStorico.mdb' from Anno10"
End Sub
======================================================
Dove:
 quando mi appare il box scrivo il periodo che la query dovra' filtrare,
esempio 2004.
Poi quando confermo mi da errore.
Dove, come vedi, ho scritto Anno10, lo intendo come il nome da dare alla
tabella che dovra'
crearsi nel db ArchivioStorico, giusto?
A giudicare dai risultati penso di no!
Scusa ma spesso sono di pietra!


                    Il 21 Ago 2005, 21:29, 
vignali_...@libero.it
 (fabrizio vignali) ha

   Massimo,
ci sono. Ho scritto:
=========================================
 Option Compare Database
Option Explicit
Private Sub Comando3_Click()
Dim db As DAO.Database
Dim nometbl As String
nometbl = InputBox("Qui ci scrivo quando, lo chiede il box, il nome da dare
alla tabella su altro db")
Set db = CurrentDb
db.Execute "select TArchivio.Data, TArchivio.Dipendente, TArchivio.Turno,
TArchivio. Dalle, TArchivio.Alle, TArchivio.TotaleOre into " & nometbl & "
in "
'C:\VFSOFT Turnazione del Personale\ArchivioStorico.mdb' from T.Archivio"
End Sub
==========================================================
Pero' all'esecuzione dopo la richiesta del nome da dare alla tabella, mi da
errore.Dice:
"L'istruzione SELECT include una parola riservata o un argomento scritto in
modo errato o mancante oppure la punteggiatura non è corretta." Tant'è che :
'C:\VFSOFT Turnazione del Personale\ArchivioStorico.mdb' from T.Archivio".
Me lo da in verde e credo non dovrebbe.
Perdona l'ignoranza ma mi so' incriccato, ho cambiato di tutto e niente.
alla fine butto via tutto!
Ciao Grazie


                    Il 22 Ago 2005, 00:38, 
vignali_...@libero.it
 (fabrizio vignali) ha

Massimo, ci sono!
Ho scritto questo e funziona tutto perfettamente!
====================================================
Option Compare Database
Option Explicit
Private Sub Comando3_Click()
Dim Db As DAO.Database
Dim nometbl As String
Dim anno As Integer
nometbl = InputBox("Digita l'anno relativo ai dati che vuoi archiviare")
Set Db = CurrentDb
Db.Execute "SELECT TArchivio.Data, TArchivio.Dipendente, TArchivio.Turno,
TArchivio.Dalle, TArchivio.Alle, TArchivio.TotaleOre into " & nometbl & " in
'C:\VFSOFT Turnazione del Personale\ArchivioStorico.mdb' from TArchivio
ORDER BY TArchivio.Data, TArchivio.Dipendente, TArchivio.Dalle"
End Sub
==========================================================
Adesso se hai ancora un po' di pazienza per spiegarmi come faccio a
richiamare una qualsiasi tabella che nominero' con il numero dell'anno (
2004-2005 e cosi' via ) nel db denominato Archivio storico ho finito di
tribolare!
Ciao Grazie


 Fabrizio
Ciao,
Massimo 


 Ciao,
la tabella archivio del db principale, è funzionante con tutti i filtri di
ricerca. Ho pensato di dover creare un db archivio in quanto con il passar
del tempo i dati lievitano e ho paura di arrivare al tetto massimo dei
record visualizzabili di 32000 circa in un anno, che access dice (correggimi
se sbaglio) come limite. Inoltre, vista la mia scarsa conoscenza, il db che
ho fatto, perfettamente rispondente alle mie esigenze ma sicuramente
realizzabile con sistemi più funzionali e più piccoli, è di 40 mega circa.
Non ti mettere a ridere, è la verità! In due anni in modo autodidatta è solo
quello che sono riuscito a fare. T'ho detto che sono tosto! Ora, usando un
db esterno era mi intenzione ridurre i dati sul db principale.
Il filtro che dici, con questa archiviazione esterna, in fondo non mi
servono. Ogni anno quando archivio i dati, azzero la tb archivio sul
principale, pertanto i dati successivi saranno solo quelli che avranno come
data quella relativa al nome che darò alla tabella, 2004 o 2005 così via. Mi
servirà una maschera sul db principale per richiamare la tabella che
desidero o un sistema che mi consenta di usare un dispositivo solo per
questo. Altrimenti quello che ho guadagnato in spazio con i dati me lo
rimangio con le maschere.
Vidi se è possibile.
Ciao Grazie


 se sbaglio) come limite.
Un attimo, un discorso è i record che visualizzi, altro quelli che 
memorizza.
Il limite è di un giga o due a seconda della versione, io non ci sono mai 
arrivato.
Visualizzare oltre 2-5.000 record mi sembra una follia, in quanto non 
potresti neanche leggerli tutti.
Un problema potrebbe essere il rallentamento nell'esecuzione della 
visualizzazione/ricerche.
Tuttavia penso che come prima strada, buttare tutti i dati in un'altra 
tabella su un altro db potrebbe essere già una buona strada. Come secondo 
passo, se tra qualche anno vedi che anche questa diventa lenta come 
soluzione, puoi usare più di una tabella, o magari indicizzare correttamente 
la tabella che usi.
Nel frattempo le tue conoscenze sono aumentate di sicuro e quindi ti 
risulterà molto più semplice.
Ah, per diminuire le dimensioni, puoi anche dividere il db in due (si parla 
di BE e FE) in un file metti tabelle e relazioni, nell'altro maschere query 
e report e tutto il resto.
C'è qualcosa spiegato molto bene nel sitocomune. (
www.sitocomune.com
)
Ciao,
Massimo


 Quindi vuoi dire che da un punto di vista di visualizzazione è inutile che
crei una tabella per ogni anno di dati sul db archivio in quanto anche se la
tabella archivio sul db principale contiene piu di 100.000 (per esempio)
record, riuscirò sempre a visualizzarli o a filtrarli , ma bensì per un
discorso di velocità durante il lavoro o la compattazione.
Ma come dicevo prima, possibile usare una sola maschera sul db principale,
 con un box che esce fuori all'apertura e sull'origine maschera scegliere
quale tabella del db archivio che avevo precedentemente nominato?
Riguardo all'esperienza ti dico che più di tanto non credo di crescere in
quanto riesco a modificare ma non a creare (sto parlando di codice), e
questo mi costringe sempre a scassare su it.comp.appl.access. per ottenere
qualcosa. Ho provato anche a studiare un pò ma dopo un certo limite mi devo
fermare, non arrivo. Riesco meglio con la pratica e domandare a destra e a
sinistra. In ogni caso mi accontento, in questi due anni con il vostro aiuto
è più di quanto avevo sperato di ottenire. Non ho realizzato tanti db, solo
questo, è un db gestionale per attribuire i turni di lavoro ai dipendenti
dell'Istituto di Vigilanza Privata dove lavoro. A forza di nottate e il
votro aiuto son riuscito ad attribuire i riposi in automatico per tutto
l'anno, attrubuire i turni senza duplicati, coprire tutti turni richiesti,
tutte le stampe in automatico e tutta la modulistica necessaria. Se riesco a
chiudere il discorso archiviazione e con la risposta al quesito che ti ho
chiesto è fatta, cerchero di venire a capo al sistema per poter dare anche i
turni in automatico, mi scoppiera il cervello e gonfiero altro a qualcuno di
voi ma devo riuscirci.
Grazie ancora Massimo
Vedi come posso fare per dare un origine meschera variabile se db diverso,
sempre sia possibile
Ciao Fabrizio


 Ciao Fabrizio
Ripeto, "non si può fare" è una parola che nell'informatica viene usata 
sempre meno.
Ciao,
Massimo 


  Ok. Più tardi in ufficio provo a vedere quello che ne ricavo. Domani mattina
trovi il seguito.
Ciao Grazie


                    Il 22 Ago 2005, 18:10, 
vignali....@virgilio.it
 (fabrizio vignali) ha
scritto:

 Massimo,
con il tuo sistema è uno spettacolo!
Ma se faccio un modulo con:
================================
Option Explicit
Public Function ApriArchivioStorico() As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim Anno As String
Anno = InputBox("Quale anno vuoi visualizzare?")
Set db = DBEngine.OpenDatabase("c:\VFSOFT Turnazione del
Personale\ArchivioStorico.mdb")
Set rs = db.OpenRecordset("Select * from " & Anno)
End Function
===========================
Funzionera'?
In ogni caso va bene con la maschera come hai detto tu.
Azzero ogni anno il db principale, mantengo le dimensioni contenute,
problemi di velocita' non ci sono e chi s'è visto s'è visto come si dice.
Grazie ancora per l'aiuto.
Alla prossima.
Ciao Fabrizio



 


 > Ciao Fabrizio.
Ancora una cosa:
Dovrei memorizzare, per poi riconoscere in tempo reale con una applicazione,
dei toni emessi da alcuni ricetrasmettitori portatili. Pensi che access
possa fare al caso mio o se puoi indicarmi che tipo di applicazione dovrei
usare?


 Ciao Fabrizio
Ciao,
Massimo


       OK. Ciao Grazie ancora.
