|
|
|
|
Bonjour
Sub x()
On Error GoTo err:
Dim rst As DAO.Recordset
Set rst = CurrentDb().OpenRecordset("T_Table")
Set rst = Nothing
Exit Sub
err:
Select Case err.Number
Case 3078
MsgBox "cette table n'existe pas"
Set rst = Nothing
End Select
End Sub
Pascal
Que c'est compliqué quand on cherche, que c'est simple quand on a trouvé |
En fait j'avais une solution de ce type car lors de l'import d'une table excel celle ci de s'écrase pas kand elle s'ajoute donc j'avais cette solution.
Option Explicit
Private Sub Commande13_Click()
On Error GoTo Err_Commande13_Click
Dim m As String
Dim a As String
Dim nomTable As String
Dim nomClasseur As String
Dim SQL As String
Dim d As String
Dim cat As New ADOX.Catalog
m = Me!mois
a = Me!année
d = a & m
DoCmd.SetWarnings False
nomClasseur = "D:\Test\Essai\" & a & m & ".xls"
nomTable = "TableTest" & a & m
If Not ExisteTable("nomTable") Then
DoCmd.TransferSpreadsheet acImport, , nomTable, nomClasseur, -1
End If
'd = "2006_T3"
'nomTable = "PJPF2006_T3"
'Définir la requête
SQL = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, [année]) " & _
"SELECT OPPO, MPE, MPF, MRE, MRF, M__, """ & d & """ AS [année] " & _
"FROM " & nomTable & _
" WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"
'Exécuter la requête
CurrentDb.Execute SQL
Set cat = Nothing
Exit_Commande13_Click:
Exit Sub
Err_Commande13_Click:
MsgBox Err.Description
Resume Exit_Commande13_Click
End Sub
Function ExisteTable(ByVal strTabl As String) As Boolean
Dim str As String
On Error GoTo err01
str = CurrentDb.TableDefs(strTabl).name
ExisteTable = True
Exit Function
err01:
Select Case Err.Number
Case 3265
ExisteTable = False
End Select
End Function
|
Bah la logik oui mais quand je click sur le bouton de mon formulaire la premiere fois j'ai exactement ce que je veux
|
Salut,
Dim Req As QueryDef
Set Req = CurrentDb.CreateQueryDef("", "delete * from [ma_table")
Req.Execute dbFailOnErrorComme ça, plus de doublons possibles...
A+ Blux "Les cons, ça ose tout. C'est même à ça qu'on les reconnait" |
Dans la tableau excel que j'importe rien est en double si je refait ma fonction sans avoir effacé ma table j'ai tout en double une troisieme fois en truple etc... donc c pas mon tableau excel qui cloche c'est pour ca que je voulais vérifier l'existance de ma table afin de pas faire de nouveau import et de tout avoir en double triple etc... |
Excuse-moi d'insister, mais si tu récupères tes données 2 ou 3 fois, c'est que ta clé primaire n'est pas correctement configurée...
|
Répondre à darkspoilt
|
Je vois pas ou tu vois ca moi quand je créer ma table j'exécute cette requete la apres je vois pas ou est la clé primaire?
SELECT t.année, t.OPPO, t.MPE, t.MPF, t.MRE, t.MRF, t.M__ INTO Test FROM t; et après je fais INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, [année]) SELECT OPPO, MPE, MPF, MRE, MRF, M__, """ & d & """ AS [année] FROM " & nomTable WHERE CBQD='total' AND MOIS='total' AND CMOP='total';" |
Quand tu fais une requête SELECT INTO, il te crée une table dont les champs reprennent les propriétés de la table lue. Si tu as une clé primaire, il va la reprendre, si tu n'en as pas, il va t'en créer une.
|
Répondre à darkspoilt
|