Depuis une application VBA Access, j'ai besoin de comparer les noms de table
d'une base à une chaine de caratère pour savoir si une table qui a le nom de
cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables
Res = StrComp(tab.Name, chaine, 1)
If Res = 0 Then
GoTo creer_champ
End If
Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède
environ 330 tables dont plus de 300 tables systèmes. Mon application est donc
fortement ralentie.
Y a t'il un moyen d'optimiser cela en évitant de consulter les tables
systèmes ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro [MVP]
lyris a écrit :
Bonjour,
Depuis une application VBA Access, j'ai besoin de comparer les noms de table d'une base à une chaine de caratère pour savoir si une table qui a le nom de cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables Res = StrComp(tab.Name, chaine, 1) If Res = 0 Then GoTo creer_champ End If Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède environ 330 tables dont plus de 300 tables systèmes. Mon application est donc fortement ralentie. Y a t'il un moyen d'optimiser cela en évitant de consulter les tables systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
lyris a écrit :
Bonjour,
Depuis une application VBA Access, j'ai besoin de comparer les noms de table
d'une base à une chaine de caratère pour savoir si une table qui a le nom de
cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables
Res = StrComp(tab.Name, chaine, 1)
If Res = 0 Then
GoTo creer_champ
End If
Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède
environ 330 tables dont plus de 300 tables systèmes. Mon application est donc
fortement ralentie.
Y a t'il un moyen d'optimiser cela en évitant de consulter les tables
systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...'
existe.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Depuis une application VBA Access, j'ai besoin de comparer les noms de table d'une base à une chaine de caratère pour savoir si une table qui a le nom de cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables Res = StrComp(tab.Name, chaine, 1) If Res = 0 Then GoTo creer_champ End If Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède environ 330 tables dont plus de 300 tables systèmes. Mon application est donc fortement ralentie. Y a t'il un moyen d'optimiser cela en évitant de consulter les tables systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
lyris
Impeccable, ca marche ! merci Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit : > Bonjour, > > Depuis une application VBA Access, j'ai besoin de comparer les noms de table > d'une base à une chaine de caratère pour savoir si une table qui a le nom de > cette chaine se trouve dans la base de données SQL Server. > > pour ça j'ai essayé le code suivant : > > For Each tab In catalogBase.Tables > Res = StrComp(tab.Name, chaine, 1) > If Res = 0 Then > GoTo creer_champ > End If > Next > > Ca à l'air de fonctionner mais le problème, c'est que le catalog possède > environ 330 tables dont plus de 300 tables systèmes. Mon application est donc > fortement ralentie. > Y a t'il un moyen d'optimiser cela en évitant de consulter les tables > systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Impeccable, ca marche ! merci
Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit :
> Bonjour,
>
> Depuis une application VBA Access, j'ai besoin de comparer les noms de table
> d'une base à une chaine de caratère pour savoir si une table qui a le nom de
> cette chaine se trouve dans la base de données SQL Server.
>
> pour ça j'ai essayé le code suivant :
>
> For Each tab In catalogBase.Tables
> Res = StrComp(tab.Name, chaine, 1)
> If Res = 0 Then
> GoTo creer_champ
> End If
> Next
>
> Ca à l'air de fonctionner mais le problème, c'est que le catalog possède
> environ 330 tables dont plus de 300 tables systèmes. Mon application est donc
> fortement ralentie.
> Y a t'il un moyen d'optimiser cela en évitant de consulter les tables
> systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...'
existe.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Impeccable, ca marche ! merci Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit : > Bonjour, > > Depuis une application VBA Access, j'ai besoin de comparer les noms de table > d'une base à une chaine de caratère pour savoir si une table qui a le nom de > cette chaine se trouve dans la base de données SQL Server. > > pour ça j'ai essayé le code suivant : > > For Each tab In catalogBase.Tables > Res = StrComp(tab.Name, chaine, 1) > If Res = 0 Then > GoTo creer_champ > End If > Next > > Ca à l'air de fonctionner mais le problème, c'est que le catalog possède > environ 330 tables dont plus de 300 tables systèmes. Mon application est donc > fortement ralentie. > Y a t'il un moyen d'optimiser cela en évitant de consulter les tables > systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
SQLpro [MVP]
a mon humble avis, comme la plupart des informaticiens : par manque de connaissance des possibilités de SQL et des SGBDR en général...
A +
lyris a écrit :
Impeccable, ca marche ! merci Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit :
Bonjour,
Depuis une application VBA Access, j'ai besoin de comparer les noms de table d'une base à une chaine de caratère pour savoir si une table qui a le nom de cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables Res = StrComp(tab.Name, chaine, 1) If Res = 0 Then GoTo creer_champ End If Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède environ 330 tables dont plus de 300 tables systèmes. Mon application est donc fortement ralentie. Y a t'il un moyen d'optimiser cela en évitant de consulter les tables systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
a mon humble avis, comme la plupart des informaticiens :
par manque de connaissance des possibilités de SQL et des SGBDR en
général...
A +
lyris a écrit :
Impeccable, ca marche ! merci
Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit :
Bonjour,
Depuis une application VBA Access, j'ai besoin de comparer les noms de table
d'une base à une chaine de caratère pour savoir si une table qui a le nom de
cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables
Res = StrComp(tab.Name, chaine, 1)
If Res = 0 Then
GoTo creer_champ
End If
Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède
environ 330 tables dont plus de 300 tables systèmes. Mon application est donc
fortement ralentie.
Y a t'il un moyen d'optimiser cela en évitant de consulter les tables
systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...'
existe.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
a mon humble avis, comme la plupart des informaticiens : par manque de connaissance des possibilités de SQL et des SGBDR en général...
A +
lyris a écrit :
Impeccable, ca marche ! merci Je me demande bien pourquoi j'étais parti dans un truc aussi compliqué.
"SQLpro [MVP]" a écrit :
lyris a écrit :
Bonjour,
Depuis une application VBA Access, j'ai besoin de comparer les noms de table d'une base à une chaine de caratère pour savoir si une table qui a le nom de cette chaine se trouve dans la base de données SQL Server.
pour ça j'ai essayé le code suivant :
For Each tab In catalogBase.Tables Res = StrComp(tab.Name, chaine, 1) If Res = 0 Then GoTo creer_champ End If Next
Ca à l'air de fonctionner mais le problème, c'est que le catalog possède environ 330 tables dont plus de 300 tables systèmes. Mon application est donc fortement ralentie. Y a t'il un moyen d'optimiser cela en évitant de consulter les tables systèmes ?
il serait plus simple de faire une requête du genre :
SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '...'
dans ce cas si cette requête retourne 1 c'est que la table de nom '...' existe.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************