Newsgroup: it.comp.appl.access
Titolo: Combo con risorse del computer

Buongiorno a tutti voi,
dovrei con una query di accodamento aggiungere determinati dati in un db 
esterno che è posizionato su una penna USB, ora dove sta il problema;
il mio Hard Disk ha due partizioni C e D, un masterizzatore E, a volte 
collego una unità esterna F, quindi la mia penna non sempre come unità ha la 
lettera G per poter impostare un codice SQL di questo tipo:
INSERT INTO TabellaEsterna IN 'G:\Salvataggi\CopiaMioDB.mdb';
SELECT *
FROM Tb_Presenze_Storiche
(sempre ammesso che questo codice vada bene)
Fantasticavo quindi in questo senso: Si potrebbe creare una combo che mi 
recupera l'elenco dei drive e quindi quella (unità) che io seleziono diventa 
la predefinita (in quel momento) per il salvataggio.
Napoleone 

 ha scritto nel messaggio news:bpVke.25573$795.7...@twister1.libero.it...

Con VBScript puoi ottenere l'elenco e il tipo di drive presenti:
es.
Sub ShowDriveType()
   Dim fso, d, t, dc
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set dc = fso.Drives
       For Each d In dc
        Set d = fso.GetDrive(d.DriveLetter)
        Select Case d.DriveType
            Case 0: t = "sconosciuta"
            Case 1: t = "removibile"
            Case 2: t = "fissa"
            Case 3: t = "di rete"
            Case 4: t = "CD-ROM"
            Case 5: t = "disco RAM"
        End Select
        Debug.Print "Unita " & d.DriveLetter & ": - " & t
        Set d = Nothing
        Next
Set dc = Nothing
Set fso = Nothing
End Sub
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:d71krn$jrh$1...@canarie.caspur.it...

Questo codice va inserito in un modulo,
se si, da dove richiamarlo? (nella Combo)
Cia Napoleone

 Cia Napoleone
Devi inserirlo in un modulo creando una funzione non una subroutine e richiamarla all'apertura della form che riempirą la combo 
visualizzandoti i dati "freschi";
es.
Function ShowDriveType() As String
Dim fso, d, t, dc, strElenco as String
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d In dc
    Set d = fso.GetDrive(d.DriveLetter)
    Select Case d.DriveType
        Case 0: t = "sconosciuta"
        Case 1: t = "removibile"
         Case 2: t = "fissa"
         Case 3: t = "di rete"
         Case 4: t = "CD-ROM"
         Case 5: t = "disco RAM"
    End Select
    strElenco= strElenco & ";" & "Unita " & d.DriveLetter & ": - " & t
    Set d = Nothing
Next
Set dc = Nothing
Set fso = Nothing
ShowDriveType = Mid(strElenco, 2)
End Sub
Poi nell'evento "su apertura" della form inserisci il codice:
Me!nomeCombo.Rowsource = ShowDriveType()
La casella combinata deve avere la proprietą "tipo origine riga" impostata a "elenco valori"
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:d71pi7$m4l$1...@canarie.caspur.it...

Quando tento di aprire la maschera mi esce il messaggio:
Errore di compilazione:
prevista Function o variabile
Napoleone 

 Napoleone
Descrivi quello che hai fatto e invia il codice...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Il modulo si chiama Sub ShowDriveType()
Ecco il codice:
----------------------------------------------
Sub ShowDriveType()
   Dim fso, d, t, dc
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set dc = fso.Drives
       For Each d In dc
        Set d = fso.GetDrive(d.DriveLetter)
        Select Case d.DriveType
            Case 0: t = "sconosciuta"
            Case 1: t = "removibile"
            Case 2: t = "fissa"
            Case 3: t = "di rete"
            Case 4: t = "CD-ROM"
            Case 5: t = "disco RAM"
        End Select
        Debug.Print "Unita " & d.DriveLetter & ": - " & t
        Set d = Nothing
        Next
Set dc = Nothing
Set fso = Nothing
End Sub
----------------------------------------
La combo si chiama CmbDrive
------------------------------------
La combo è posizionata nella maschera M_Salva
--------------------------------------
nella maschera M_Salva a fronte dell'evento su apertura ho inserito questo 
codice:
Private Sub Form_Open(Cancel As Integer)
Me!CmbDrive.RowSource = ShowDriveType()
----------------------------------------------
Mi pare non ci sia altro
Napoleone
End Sub


Dove hai salvato questa sub
Se nella stessa form va bene se in un modulo  o ne fai una function o la
rendi pubblica
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa1 - I° Conferenza Italiana per Sviluppatori Access Arezzo 4+5
Giugno 2005 Sono aperte le iscrizioni  Info:  
www.donkarl.com/it

 End Sub
La puoi mettere sia in un Modulo esterno, non serve dichiararla
Public in quanto l'assenza rende implicito il Public, oppure
nella Form, allora č meglio sia Private.
Su Load di Form chiamala in questo modo dopo averla
modificata come sotto:
Call ShowDriveType(Me!CmbDrive)
Prova a cambiarla cosě:
 Sub ShowDriveType(cbo as Access.ComboBox)
    Dim fso, d, t, dc
    Dim sRow as string
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set dc = fso.Drives
      For Each d In dc
         Set d = fso.GetDrive(d.DriveLetter)
         Select Case d.DriveType
             Case 0: t = "sconosciuta"
             Case 1: t = "removibile"
             Case 2: t = "fissa"
             Case 3: t = "di rete"
             Case 4: t = "CD-ROM"
             Case 5: t = "disco RAM"
         End Select
         srow= srow & d.DriveLetter & ": - " & t & ";"
         Set d = Nothing
      Next
    cbo.Rowsource=srow 
 Set dc = Nothing
 Set fso = Nothing
 End Sub
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

> Sub ShowDriveType()
Come, cosi?
Sub ShowDriveType(PubblicFunction)
e poi la dovrei richiamare
Private Sub Form_Open(Cancel As Integer)
Me!CmbDrive.RowSource = ShowDriveType(PubblicFunction)
End Sub
Napoleone 

 @Alex
E' andata, grazie! ma ora stabilito il drive,
come fa il codice ad aggiustarsi da solo dopo che ho selezionato il drive
(nelle'esempio sotto mi salva in G; ma dovrei salvare in F:\...)
INSERT INTO TabellaEsterna IN 'G:\Salvataggi\CopiaMioDB.mdb';
SELECT *
FROM Tb_Presenze_Storiche
Napoleone

 wrote in message
news:vg0le.26195$
795.8...@twister1.libero.it

Mi pare una semplice ricostruzione di Stringa:
Non so se il predicato SQL sopra è residente in una
Query oppure se lo esegui da codice:
1)Dim strSQL as string
  strSQL="INSERT INTO TabellaEsterna IN '" & NomeDriver " & _
         "Salvataggi\CopiaMioDB.mdb'; " & _
         "SELECT * FROM Tb_Presenze_Storiche"
  CurrentDb.Execute strSQL
2)La stringa SQL è sempre valida quella di prima, per modificare
  l'origine della QUERY: 
  CurrentDb.Querydefs("NomeQuery").SQL=strSQL
  Quindi la esegui.



Ciao Alessandro,
Considerando che sono nella maschera M_Salvataggi
in cui ho la combo CmbDrive (dove una volta selezionato il drive di 
destinazione)
A fronte dell'evento Click del mio bottone EseguiSalvataggio, mi lancia la 
query
Q_Salvataggi; attualmente il codice SQL della query č:
INSERT INTO Tb_Presenze_Storiche IN 'F:\Salvataggi\CopiaMioDB.mdb.mdb'
SELECT Tb_Presenze_Storiche.*
FROM Tb_Presenze_Storiche;
Pero come vedi in questo modo non posso selezionare il drive
----
Ho provato a mettere il tuo codice a fronte dell'evento come segue
Private Sub EseguiSalvataggio_Click()
Dim strSQL As String
  strSQL="INSERT INTO Tb_Presenze_Storiche IN '" & NomeDriver " & _
         "Salvataggi\CopiaMioDB.mdb'; " & _
         "SELECT * FROM Tb_Presenze_Storiche"
  CurrentDb.Execute strSQL
End Sub
-----------
Mi segnala errore di compilazione
Errore di sintassi
Mi Chiedo: Ma il nomedrive, se lo prende da solo dalla combo cmbDrive?
Ciao Napoleone 

 Ciao Napoleone
Beh un pò di immaginazione non guasta...!!!
Quanto ti ho suggerito è indicativo non conoscendo
lo scenario in cui ti muovi, ovviamente la variabile
NomeDriver dovrà essere sostituita dalla Combo.
Per controllare la sintassi eventualmente inserisci un 
MSGBOX strSQL oppure appoggiati al Debug.Print


 ha scritto nel messaggio 
news:dc339f57828484bdc8...@mygate.mailgate.org...

Ad Esempio
Napoleone