VBA fare un accodamento

di
Anonimizzato12763
il
7 risposte

VBA fare un accodamento

Ho fatto questo codice:


Option Compare Database

'------------------------------------------------------------
' Macro1
'
'------------------------------------------------------------
Function Macro1()
On Error GoTo Macro1_Err

    DoCmd.OpenQuery "Selezione record voluti", acViewNormal, acEdit
    DoCmd.OpenQuery "SalvataggioRisultatoQueryInTabella", acViewNormal, acEdit
    Dim io As Integer
    io = [Forms]![NuovoProgetto]![Numero progetto]
    DoCmd.Rename io, acTable, "PROGETTO"

Macro1_Exit:
    Exit Function

Macro1_Err:
    MsgBox Error$
    Resume Macro1_Exit

End Function


praticamente mi esegue una query che mi seleziona i record da me scelti in una maschera ed esegue la seconda query che mi crea una tabella contenente la selezione della prima query dopodichè rinomino questa tabella con il numero del progetto prendendolo da quello inserito nella maschera, ora io avrei bisogno di fare un if che non saprei come fare per dire al programma quando dopo aver generato la tabella la rinomina che se la tabella con quel nome esiste gia allora accodo quella nuova facendola diventare una sola, mentre invece se non esiste allora la creo, io ho pensato a una cosa simile

 If io = io Then
    strSql = "SELECT io.* UNION io.* FROM io"
    End If


ma ovviamente non mi funziona, qualcuno ha un idea?

io ho fatto questa funzione che mi dice se la tabella esiste o no

Function fctTableExists(strTableName As String) As Boolean

  If DCount("*", "MSysObjects", "Name='" & strTableName & "'") Then
  fctTableExists = True
  End If
End Function

Sub tabellaEsiste()
Dim io As String
io = [Forms]![NuovoProgetto]![Numero progetto]
If fctTableExists(io) Then
  MsgBox ("la tabella esiste")
  Else
  MsgBox ("la tabella non esiste")
  End If
End Sub


ma come faccio a dire se la tabella esiste allora accoda la selezione fatta nella maschera con la query?

7 Risposte

  • Re: VBA fare un accodamento

    NESSUN IDEA? NE HO DAVVERO BISOGNOOO scusate lo sfogo ma mi serve
  • Re: VBA fare un accodamento

    Prova

    Public Function ExistTable_DAO(sPathDb As String, sDBname As String, TableName As String) As Boolean
    'In DAO (da dichiararsi fra i riferimenti del progetto):

    Dim db As DAO.Database
    Dim t As TableDef
    ' Set db = OpenDatabase("C:\cartella\pippo.mdb")
    Set db = OpenDatabase(sPathDb & "\" & sDBname)

    ExistTable_DAO = False
    For Each t In db.TableDefs
    If t.Name = TableName Then
    ExistTable_DAO = True
    Exit For
    End If
    Next t

    ' If ExistTable_DAO Then
    ' MsgBox "Tabella esistente"
    ' End If

    db.Close
    Set db = Nothing
    End Function
  • Re: VBA fare un accodamento

    Propongo una versione estremamente più veloce e funzionale di verifica di esistenza Tabella...
    Public Function TableExist(mDB As DAO.Database, NomeTabella As String) As Boolean
        On Error Resume Next
        Dim strName As String
        strName = mDB.TableDefs(NomeTabella).Name
        If Err.Number = 0 Then
            TableExist = (strName = NomeTabella)
        End If
    End Function
    Se il DB è quello corrente:
    
    If TableExist(CurrentDb,"TuaTabella") then
    ....
    Else
    ....
    End if
  • Re: VBA fare un accodamento

    J

    pfmarro ha scritto:


    prova

    Public Function ExistTable_DAO(sPathDb As String, sDBname As String, TableName As String) As Boolean
    'In DAO (da dichiararsi fra i riferimenti del progetto):

    Dim db As DAO.Database
    Dim t As TableDef
    ' Set db = OpenDatabase("C:\cartella\pippo.mdb")
    Set db = OpenDatabase(sPathDb & "\" & sDBname)

    ExistTable_DAO = False
    For Each t In db.TableDefs
    If t.Name = TableName Then
    ExistTable_DAO = True
    Exit For
    End If
    Next t

    ' If ExistTable_DAO Then
    ' MsgBox "Tabella esistente"
    ' End If

    db.Close
    Set db = Nothing
    End Function
    non ci ho capito granchè, mi spieghi le parti da modificarer per utilizzare questa funzione nel mio DB e la sub che mi servirebbe per usarla??
  • Re: VBA fare un accodamento

    Indipendentemente dal metodo che usi per rilevare la tabella, credo che tu debba creare una seconda query in alternativa a SalvataggioRisultatoQueryInTabella:
    
    If TableExist(CurrentDb,"TuaTabella") then
        SalvataggioRisultatoQueryAccodaInTabella
    Else
        SalvataggioRisultatoQueryInTabella
    End if
  • Re: VBA fare un accodamento

    Segnalo CROSSPOSTING:
    "http://forum.masterdrive.it/access-79/accodare-tabella-generata-rinominata-tramite-vba-risultato-query-suo-76329/"
  • Re: VBA fare un accodamento

    3d chiuso, beby09, leggi il regolamento
Devi accedere o registrarti per scrivere nel forum
7 risposte