Query temporizzata

giovedì 26 febbraio 2015 - 11.51
Tag Elenco Tags  Windows 7  |  Access (.mdb)  |  Office 2010

lorenzo57 Profilo | Newbie

Un saluto a tutto il forum.

Vorrei far partire automaticamente una query di aggiornamento alle 20:00 di ogni giorno. Da una ricerca in internet si fa riferimento alla creazione di un file script vbs ma che non so creare.

C'è qualcuno di buona volontà che può aiutarmi?

Grazie

renarig Profilo | Expert

una alternativa meno professionale è fare un .mdb
con dentro una query salvata tipo
UPDATE T1 IN 'D:\Percorso\\DB01.mdb' SET T1.C1 = "cdex", T1.C2 = 12, T1.C3 = "juyx" WHERE ..... eccetera ..... ;
poi ci metti un AutoExec che:
- lancia la query
- richiude tutto
poi ti scheduli il tuo file DB01.mdb


Se vuoi essere piu professionale
comincia a farti un documento di teso
ne rinomini la estensione ( .txt diventa .vbs )
poi ci lavoriamo un po insieme per farlo girare
piu o meno cosi:
http://www.ntechcomm.com/2014/06/how-to-connect-to-access-database-with-vbscript/


Facci sapere

lorenzo57 Profilo | Newbie

Renarig, intanto ti ringrazio per i tuoi aiuti. Lanciando il vbs ( qui sotto) se il database non è aperto mi dice che non può eseguire la query, per cui sono costretto ad aprirlo per'esecuzione la query. Quindi si presuppone che il database devo lasciarlo sempre aperto per l'aggiornamento della query? (La query è di creazione tabella)



'Define the driver and data source
'Access 2007, 2010, 2013 ACCDB:
'Provider=Microsoft.ACE.OLEDB.12.0
''''''''''''''''''''''''''''''''''''''
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Administrator\Desktop\db45.accdb"

'Define object type
Set objConn = CreateObject("ADODB.Connection")

'Open Connection
objConn.open connStr

'Define recordset and SQL query
Set rs = objConn.execute("SELECT dbo__LIQUIDAZ.PD_FORCLI, dbo__LIQUIDAZ.LS_NUMREG, dbo__LIQUIDAZ.LS_ANNREG, dbo__LIQUIDAZ.LS_STATO, Date() AS Dateagg INTO prova FROM dbo__LIQUIDAZ")

'While loop, loops through all available results
DO WHILE NOT rs.EOF
'add names seperated by comma to getNames
getNames = getNames + rs.Fields(0) & ","
'move to next result before looping again
'this is important
rs.MoveNext
'continue loop
Loop

'Close connection and release objects
objConn.Close
Set rs = Nothing
Set objConn = Nothing

'Return Results via MsgBox
MsgBox getNames

renarig Profilo | Expert

Se è solo una query di aggiornamento magari puoi evitarti il RecordSet.

cosi sono riuscito a fare eseguire una query direttamente da un file .vbs anche se il .mdb è chiuso

Dim Daox SET Daox = CreateObject("DAO.DBEngine.36") ' se hai un .accdb penso che devi aggiornare quel .36 Dim Path Path = "D:\TuoPercorso\DB01.mdb" Dim DBxx SET DBxx = Daox.OpenDatabase(Path) dim StSq StSq = "UPDATE T1 SET T1.Campo1 = 'cc44' WHERE T1.Id=4;" DBxx.Execute (StSq),dbFailOnError DBxx.close ' Daox.close 'questa riga mi genera un errore SET DBxx=nothing SET Daox=nothing

Facci sapere

.

lorenzo57 Profilo | Newbie

Renarig, non so come adattare la mia query al tuo file. Puoi darmi una mano?
La query si chiama "prova"
il percorso : "c:\User\Administrator\Desktop\45db.accdb"

renarig Profilo | Expert

si ma !!!!!
La tua qyery "prova" dove si trova ????
forse nel file di nome: "45db.accdb" ????

in questo caso la puoi eliminare da li e spostare nel file .vbs


passami il testo SQL della query "prova"
( in struttura query in alto a Sx c'è un pulsante " Visualizza SQL"
poi copi/incolli il testo nel forum )

.

renarig Profilo | Expert

se invece preferisci lasciare la query "prova" nel tuo file .accdb
allora il file .vbs si riduce a questo:
Dim Daox Set Daox = CreateObject("DAO.DBEngine.120") ' sembra che prima di Access 2002 si usasse .35 ' Access 2002 e 2003 erano al .36 ' oltre il 2003 si usa 120 Dim Path Path = "C:\User\Administrator\Desktop\45db.accdb" Dim DBxx Set DBxx = Daox.OpenDatabase(Path) DBxx.Execute ("prova"), dbFailOnError DBxx.Close ' Daox.Close 'questa riga mi genera un errore Set DBxx = Nothing Set Daox = Nothing

Facci sapere

lorenzo57 Profilo | Newbie

Renaring, buongiorno!

Ho inserito nel file vbs il codice relativo alla query "prova" inserita nel accdb. Lanciando il file vps mi da errore: "Impossibile trovare il file "C:\User\Administrator\Desktop\db45.accdb".
Strano, perchè il percorso è questo.
Mi fai sapere qualcosa?
Grazie Renaring.
Questo in SQL la query prova:

SELECT dbo__LIQUIDAZ.PD_FORCLI, dbo__LIQUIDAZ.LS_NUMREG, dbo__LIQUIDAZ.LS_ANNREG, dbo__LIQUIDAZ.LS_STATO, Date() AS Dateagg INTO test
FROM dbo__LIQUIDAZ;

renarig Profilo | Expert

>Mi fai sapere qualcosa?

Non ho risposte, a me funziona ( con il mio percorso )

prova a fare comunque un copia/incolla del percorso e rimetterglielo li.

poi verifica la proprieta delle cartelle e le varie autorizzazioni

.

lorenzo57 Profilo | Newbie

Renaring,funziona !
Ho dovuto rivedere il percorso.
Ho inserito il file vbs in utilità di pianificazione di windows e funziona alla grande.

E' ciò che volevo. Ti ringrazio, sei stato veramente prezioso.

Ultima cosa: come cambia il file vbs se dovessi attivare una macro dallo stesso database (45db.accdb)?

a.pellegrino Profilo | Newbie

ciao ragazzi, anche io voglio eseguire delle query di creazione tabelle ogni giorno. ho seguito le istruzioni e mi da questo errore.


492x246 27Kb


è la prima volta che faccio questo genere di cose, quindi sono un NOOB, mi sapreste aiutare? grazie anticipatamente

P.S. ho cercato su internet è ho seguito tutte le guide messe a disposizione da microsoft, per risolvere il problema... ma persiste.

renarig Profilo | Expert

> ... anche io voglio eseguire delle query di creazione tabelle ogni giorno. .....

Peremesso che una query di creazone tabella al giorno mi sembra molto (troppo) strana .....


tornando solo alla domanda posta i motivi possono essere molteplici
il messaggio ti dice alla 2° riga cosac'è scritto alla 2° riga ????

Tu hai messo DAO120 cha si usa mi sembra da Access 2007
tu quale Access usi ?? se precedente prova con DAO36 oppure DAO35

Il nome della nuova tabella quotidiana come lo gestisci ???
Se la hai già creata ieri allora oggi non puoi più RIcrearla con lo stesso nome !!!


Magari postaci lo script completo in modo che si possa capire meglio :)

E MAGARI USA UN NUOVO THREAD perché qui saremmo accodati a una
discussione gia chiusa e risolta (tanto è gratis :) )

.


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5