Newsgroup: it.comp.software.database
Titolo: Database Access

Se io ho una cartella con dei files dentro, come si fa a creare in
automatico un database contenente una tabella con tutti i nomi dei files?
Esiste un software apposito? Si può fare con Access, senza immettere tutti i
dati a mano?
(vorrei farlo senza l'utilizzo di php o asp)
Grazie!

 (vorrei farlo senza l'utilizzo di php o asp)
Con SQL Server avrei uno sporco trucco :-)
Per Access l'unico modo che mi viene in mente
e' di scrivere una script in un qualunque linguaggio
che tramite DAO/ADO faccia il lavoro.
Ciao,
--
Gianluca Hotz
Backoffice MVP (SQL Server) MCP SQL Server and MCP Windows
Vice-President of the Italian User Group for SQL Server
Founding Member of the Italian User Group for .NET
http://www.ghotz.com
http://www.ugiss.org

 Con SQL Server avrei uno sporco trucco :-)
Scusa la curiosita', qual'e' lo sporco trucco (a volte anch'io ho bisogno di
creare automaticamente tabelle)?
Grazie
  Stefano

 
http://www.ugiss.org
tec23
qui sotto il codice di un form vb, con un mdb 97 di cui metto la struttura.
le routine dao di inserimento dovrebbero essere gestibili anche in access.
appena ho un po' di tempo pulisco (l'ho proprio schizzato adesso) e metto
codice e tutto su sundaysw.
nb: a inserire 7500 righe di una sola dir ci mette 16,2" usando i controlli
vb, 9.1" usando il solo codice. laptop p3/800.
hth, j.
--
www.sundaysw.com
DB Structure - c:\vbprove\db\dir2db\db1.mdb - 12/06/2002 12:30:58
C:\VBPROVE\DB\DIR2DB\DB1.MDB
===========================
TABLE: files
------FLD: id (N-LONG ; Size: 4 ; Req.: False)
------FLD: fpath (TEXT ; Size: 255 ; Req.: False)
------FLD: fname (TEXT ; Size: 255 ; Req.: False)
------FLD: fdate (DATE ; Size: 8 ; Req.: False)
------FLD: fsize (N-LONG ; Size: 4 ; Req.: False)
------IDX: fname
---------fname
------IDX: fpath
---------fpath
---------fname
------IDX: id
---------id
===========================
Option Explicit
Private Const SW_SHOWNORMAL = 1
Private Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim pH As Long
Dim sPath As String, sFile As String
Private Sub ChekPath()
    On Error GoTo errman
    sPath = Dir1.Path
    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    File1.Path = sPath
'    Dir1.Refresh
    File1.Refresh
'    Caption = sPath
    lblFCount = File1.ListCount
    Exit Sub
errman:
    Drive1 = "c:"
    Drive1.Refresh
    sPath = "c:\"
    Dir1 = sPath
    Dir1.Refresh
    File1.Refresh
End Sub
Private Sub SetPath(s As String)
    Dir1.Path = s
    ChekPath
End Sub
Private Sub cmdAddCode_Click()
    If File1.ListCount < 1 Then Exit Sub
    Dim time1: time1 = Timer
    Dim db As Database, rs As Recordset
    Set db = OpenDatabase("db1.mdb")
    Set rs = db.OpenRecordset("files")
    Dim sName As String
    sName = Dir$(sPath, vbDirectory)
    While sName <> ""
        If sName <> "." And sName <> ".." Then
            Label1 = sName
            With rs
                .AddNew
                !fname = sName
                !fpath = sPath
                !fdate = FileDateTime(sPath & sName)
                !fsize = FileLen(sPath & sName)
                .Update
            End With
        End If
        sName = Dir
        DoEvents
    Wend
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    Data1.Refresh: DBGrid1.Refresh: Data1.Recordset.MoveLast
    Caption = Format(Timer - time1, "##0.000")
End Sub
Private Sub cmdAddControl_Click()
    If File1.ListCount < 1 Then Exit Sub
    Dim time1: time1 = Timer
    Dim db As Database, rs As Recordset
    Set db = OpenDatabase("db1.mdb")
    Set rs = db.OpenRecordset("files")
    Dim j As Long
    With rs
        For j = 0 To File1.ListCount - 1
            File1.ListIndex = j
            .AddNew
            !fname = File1.FileName
            !fpath = sPath
            !fdate = FileDateTime(sFile)
            !fsize = FileLen(sFile)
            .Update
            DoEvents
        Next
    End With
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    Data1.Refresh: DBGrid1.Refresh: Data1.Recordset.MoveLast
    Caption = Format(Timer - time1, "##0.000")
End Sub
Private Sub Dir1_Change()
    ChekPath
End Sub
Private Sub Drive1_Change()
    On Error GoTo errman
    sPath = Drive1.Drive
    ChekPath
    Exit Sub
errman:
    Drive1.Drive = Left(sPath, 2)
    ChekPath
End Sub
Private Sub File1_Click()
    sFile = sPath & File1.FileName
    Label1 = sFile
End Sub
Private Sub File1_DblClick()
    On Error GoTo errman
    ShellExecute Me.hwnd, vbNullString, sFile, _
        vbNullString, "c:\", SW_SHOWNORMAL
    Exit Sub
errman:
    MsgBox Error
End Sub
Private Sub Form_Load()
    SetPath (Environ("temp"))
End Sub
Private Sub Form_Resize()
    On Error GoTo errman
    pH = picCont.ScaleHeight - Drive1.Height
    With Dir1
        .Top = Drive1.Height
        .Height = pH \ 2
    End With
    With File1
        .Top = Drive1.Height + Dir1.Height
        .Height = pH - Dir1.Height
    End With
    Exit Sub
errman:
        Caption = pH & " - D: " & Dir1.Height & " - F: " & File1.Height
End Sub

 wrote in message
news:ae77er$4i64i$1...@ID-114881.news.dfncis.de...

Non creano automaticamente tabelle,
EXEC master.dbo.xp_dirtree 'c:\'
ritorna un recordset con nome file e livello
di tutti i file nella directory specificata
e nelle sotto-directory.
Se servono piu' dettagli si puo' poi usare questa:
EXEC master.dbo.xp_getfiledetails 'c:\autoexec.bat'
Un'altra soluzione e' questa:
EXEC master.dbo.xp_cmdshell 'dir c:\ /B'
