Vérifier l'existence d'une table

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 836 fois - Téléchargée 48 fois

Contenu du snippet

Ce code fonctionne avec dao 3.6, et permet de vérifier l'existence d'une table.

Source / Exemple :


Public db           As Database

Public Function cnxTable(ByVal strTable As String) As Boolean
    OBase (CheminFichier$)
    Dim strSQL As String
    strSQL = "Select * from " & strTable
    On Error GoTo errors
    db.Execute (strSQL)
errors:
    If Err = 3078 Then
        cnxTable = False
    Else
        cnxTable = True
    End If
End Function
'--------------------------
Public Function CheminFichier$()
    Dim chemin$
    chemin$ = App.Path
    If Right$(chemin$, 1) <> "\" Then chemin$ = chemin + "\"
    CheminFichier$ = chemin$ & "MaBase.mdb"
End Function
'--------------------------
'sub pour ouvrir la base
Public Sub OBase(fichier)
    Set db = OpenDatabase(fichier)
End Sub
'-------------------------------------------------------prévoir de fermer la base :)

Conclusion :


On appel comme ça :

If cnxTable("MaTable") = false then
'ma table n'existe pas
End If

A voir également

Ajouter un commentaire

Commentaires

Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1
chai vrai que c'est utilisé !! mais vue qu'on peut faire n'importe quoi avec..... j'ai même essayé de le brancher sur mon frigo... j'ai juste un problème ! aucune carte COM n'est compatible...
joke and top kodin girls and boys(!)

sweep
Messages postés
24
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
24 mars 2005

tu viens de me sauver la vie avec ta fontion, VicoLaChips2!!
trop bien!
parce que access c'est peut etre que pour apprendre mais c'est encore ultra utilisé dans les entreprises et pas les plus petites, loin de là!
encore merci!
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1
Je pense que ta méthode est franchement plus académique !!. En plus je n'ai pas encore eu l'occasion de travailler avec sql server comme serveur de base de donnée. En fait j'utilise simplement access. Je pense qu'il y a une solution autre que celle que je suggère, mais ne la connaissant pas, j'ai contourné le problème. De toute façon Acces ça va bien pour apprendre, mais après...?? @+ et good coding guys
Messages postés
52
Date d'inscription
lundi 28 janvier 2002
Statut
Membre
Dernière intervention
8 avril 2009

Ton exemple est bien mais il ne fonctionne que ci la base se trouve avec l'executable.
Voici un exemple qui fonctionne avec SQL Serveur et oracle

dans cet exemple,
- NomConnec représente la connection à la base
"BRETENUE" représente la table à tester

If Not test_table_gene(NomConnec, "BRETENUE") Then
La table n'existe pas
endif


Function test_table_gene(NomConnec As String, NomTable As String) As Boolean
test_table_gene = False
If NomConnec = "Oracle" Then
If Test_Exist_Table_oracle(NomTable) = True Then
test_table_gene = True
End If
Else
If Test_Exist_Table_Sql(NomTable) = True Then
test_table_gene = True
End If
End If
End Function


Function Test_Exist_Table_Sql(Table As String) As Boolean
Dim rstTemp As ADODB.Recordset
Dim SqlExist As String

Test_Exist_Table_Sql = True
Set rstTemp = New ADODB.Recordset

SqlExist "select name from sysobjects where id object_id('dbo." & Table & "')"

rstTemp.Open SqlExist, cnn, , , adCmdText

If rstTemp.BOF True And rstTemp.EOF True Then
Test_Exist_Table_Sql = False
Else
Test_Exist_Table_Sql = True
End If
rstTemp.Close
End Function

Function Test_Exist_Table_oracle(Table As String) As Boolean
Dim rstTemp As ADODB.Recordset
Dim SqlExist As String

Test_Exist_Table_oracle = True
Set rstTemp = New ADODB.Recordset

SqlExist "select * from user_tables where table_name '" & UCase(Table) & "'"

rstTemp.Open SqlExist, cnn, , , adCmdText

If rstTemp.BOF True And rstTemp.EOF True Then
Test_Exist_Table_oracle = False
Else
Test_Exist_Table_oracle = True
End If
rstTemp.Close
Set rstTemp = Nothing
End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.