Bonjour à tous,
Je suis sous SQL Server 2000.
Je désire, dans une table, affecter à certaines de mes colonnes des
contraintes CHECK comportant des sous requêtes de type SELECT
..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
tables, Or le message suivant apparait à l'execution : "Les sous-requêtes
sont pas pris en charge par les contraintes CHECK..".
Donc, comment puis-je décrire des contraintes sur colonnes faisant
intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
De même comment décrire une contrainte verticale c'est à dire, une
contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
déjà saisie dans les autres enregistrements de ma table; exemple : sur une
colonne MONTANT, la valeur possible ne doit pas être supérieure à la
maxi de tous les montants déjà saisis dans les lignes précédantes ?
Merci de vos réponses.
Thierry.
Bonjour à tous,
Je suis sous SQL Server 2000.
Je désire, dans une table, affecter à certaines de mes colonnes des
contraintes CHECK comportant des sous requêtes de type SELECT
..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
tables, Or le message suivant apparait à l'execution : "Les sous-requêtes
sont pas pris en charge par les contraintes CHECK..".
Donc, comment puis-je décrire des contraintes sur colonnes faisant
intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
De même comment décrire une contrainte verticale c'est à dire, une
contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
déjà saisie dans les autres enregistrements de ma table; exemple : sur une
colonne MONTANT, la valeur possible ne doit pas être supérieure à la
maxi de tous les montants déjà saisis dans les lignes précédantes ?
Merci de vos réponses.
Thierry.
Bonjour à tous,
Je suis sous SQL Server 2000.
Je désire, dans une table, affecter à certaines de mes colonnes des
contraintes CHECK comportant des sous requêtes de type SELECT
..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
tables, Or le message suivant apparait à l'execution : "Les sous-requêtes
sont pas pris en charge par les contraintes CHECK..".
Donc, comment puis-je décrire des contraintes sur colonnes faisant
intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
De même comment décrire une contrainte verticale c'est à dire, une
contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
déjà saisie dans les autres enregistrements de ma table; exemple : sur une
colonne MONTANT, la valeur possible ne doit pas être supérieure à la
maxi de tous les montants déjà saisis dans les lignes précédantes ?
Merci de vos réponses.
Thierry.
Salut,
Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il faut
passer par des Triggers, car sous MS SQL Server, les CHECK ne sont permis
qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
tables (ou entre enregistrements différents de la même table).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" wrote in message
news:3f9cf850$0$233$
> Bonjour à tous,
>
> Je suis sous SQL Server 2000.
> Je désire, dans une table, affecter à certaines de mes colonnes des
> contraintes CHECK comportant des sous requêtes de type SELECT
> ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> tables, Or le message suivant apparait à l'execution : "Les
ne
> sont pas pris en charge par les contraintes CHECK..".
> Donc, comment puis-je décrire des contraintes sur colonnes faisant
> intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
> De même comment décrire une contrainte verticale c'est à dire, une
> contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
> déjà saisie dans les autres enregistrements de ma table; exemple : sur
> colonne MONTANT, la valeur possible ne doit pas être supérieure à la
valeur
> maxi de tous les montants déjà saisis dans les lignes précédantes ?
>
> Merci de vos réponses.
>
> Thierry.
>
>
Salut,
Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il faut
passer par des Triggers, car sous MS SQL Server, les CHECK ne sont permis
qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
tables (ou entre enregistrements différents de la même table).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" <bjt_nwsgrp@yahoo.fr> wrote in message
news:3f9cf850$0$233$626a54ce@news.free.fr...
> Bonjour à tous,
>
> Je suis sous SQL Server 2000.
> Je désire, dans une table, affecter à certaines de mes colonnes des
> contraintes CHECK comportant des sous requêtes de type SELECT
> ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> tables, Or le message suivant apparait à l'execution : "Les
ne
> sont pas pris en charge par les contraintes CHECK..".
> Donc, comment puis-je décrire des contraintes sur colonnes faisant
> intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
> De même comment décrire une contrainte verticale c'est à dire, une
> contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
> déjà saisie dans les autres enregistrements de ma table; exemple : sur
> colonne MONTANT, la valeur possible ne doit pas être supérieure à la
valeur
> maxi de tous les montants déjà saisis dans les lignes précédantes ?
>
> Merci de vos réponses.
>
> Thierry.
>
>
Salut,
Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il faut
passer par des Triggers, car sous MS SQL Server, les CHECK ne sont permis
qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
tables (ou entre enregistrements différents de la même table).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" wrote in message
news:3f9cf850$0$233$
> Bonjour à tous,
>
> Je suis sous SQL Server 2000.
> Je désire, dans une table, affecter à certaines de mes colonnes des
> contraintes CHECK comportant des sous requêtes de type SELECT
> ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> tables, Or le message suivant apparait à l'execution : "Les
ne
> sont pas pris en charge par les contraintes CHECK..".
> Donc, comment puis-je décrire des contraintes sur colonnes faisant
> intervenir d'autres colonnes de la table ou d'autres tables de ma base ?
> De même comment décrire une contrainte verticale c'est à dire, une
> contrainte qui, pour valider, la valeur saisie, fait appel à des valeurs
> déjà saisie dans les autres enregistrements de ma table; exemple : sur
> colonne MONTANT, la valeur possible ne doit pas être supérieure à la
valeur
> maxi de tous les montants déjà saisis dans les lignes précédantes ?
>
> Merci de vos réponses.
>
> Thierry.
>
>
Merci de tes conseils,
Je pense effectivement que l'ensembles des contraintes liées à la logique
métier de l'application sont apparemment à implémenter par des triggers.
Par contre, je ne savais pas que Jet permet d'utiliser ce type de
(hormis la déclaration des CONSTRAINT pour les intégrités référentielles),
peux tu m'en donner une syntaxe ou me diriger vers une source traitant de
cela.
Merci.
Thierry
"Michel Walsh" a écrit dans le
de news:
> Salut,
>
>
> Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
> passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
> qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
des
> tables (ou entre enregistrements différents de la même table).
>
>
> Espérant être utile,
> Vanderghast, Access MVP
>
> "News Groups" wrote in message
> news:3f9cf850$0$233$
> > Bonjour à tous,
> >
> > Je suis sous SQL Server 2000.
> > Je désire, dans une table, affecter à certaines de mes colonnes des
> > contraintes CHECK comportant des sous requêtes de type SELECT
> > ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> > tables, Or le message suivant apparait à l'execution : "Les
sous-requêtes
> ne
> > sont pas pris en charge par les contraintes CHECK..".
> > Donc, comment puis-je décrire des contraintes sur colonnes faisant
> > intervenir d'autres colonnes de la table ou d'autres tables de ma base
> > De même comment décrire une contrainte verticale c'est à dire, une
> > contrainte qui, pour valider, la valeur saisie, fait appel à des
> > déjà saisie dans les autres enregistrements de ma table; exemple : sur
une
> > colonne MONTANT, la valeur possible ne doit pas être supérieure à la
> valeur
> > maxi de tous les montants déjà saisis dans les lignes précédantes ?
> >
> > Merci de vos réponses.
> >
> > Thierry.
> >
> >
>
>
Merci de tes conseils,
Je pense effectivement que l'ensembles des contraintes liées à la logique
métier de l'application sont apparemment à implémenter par des triggers.
Par contre, je ne savais pas que Jet permet d'utiliser ce type de
(hormis la déclaration des CONSTRAINT pour les intégrités référentielles),
peux tu m'en donner une syntaxe ou me diriger vers une source traitant de
cela.
Merci.
Thierry
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le
de news: ebSlrmInDHA.1296@TK2MSFTNGP09.phx.gbl...
> Salut,
>
>
> Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
> passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
> qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
des
> tables (ou entre enregistrements différents de la même table).
>
>
> Espérant être utile,
> Vanderghast, Access MVP
>
> "News Groups" <bjt_nwsgrp@yahoo.fr> wrote in message
> news:3f9cf850$0$233$626a54ce@news.free.fr...
> > Bonjour à tous,
> >
> > Je suis sous SQL Server 2000.
> > Je désire, dans une table, affecter à certaines de mes colonnes des
> > contraintes CHECK comportant des sous requêtes de type SELECT
> > ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> > tables, Or le message suivant apparait à l'execution : "Les
sous-requêtes
> ne
> > sont pas pris en charge par les contraintes CHECK..".
> > Donc, comment puis-je décrire des contraintes sur colonnes faisant
> > intervenir d'autres colonnes de la table ou d'autres tables de ma base
> > De même comment décrire une contrainte verticale c'est à dire, une
> > contrainte qui, pour valider, la valeur saisie, fait appel à des
> > déjà saisie dans les autres enregistrements de ma table; exemple : sur
une
> > colonne MONTANT, la valeur possible ne doit pas être supérieure à la
> valeur
> > maxi de tous les montants déjà saisis dans les lignes précédantes ?
> >
> > Merci de vos réponses.
> >
> > Thierry.
> >
> >
>
>
Merci de tes conseils,
Je pense effectivement que l'ensembles des contraintes liées à la logique
métier de l'application sont apparemment à implémenter par des triggers.
Par contre, je ne savais pas que Jet permet d'utiliser ce type de
(hormis la déclaration des CONSTRAINT pour les intégrités référentielles),
peux tu m'en donner une syntaxe ou me diriger vers une source traitant de
cela.
Merci.
Thierry
"Michel Walsh" a écrit dans le
de news:
> Salut,
>
>
> Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
> passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
> qu'au niveau du champ, ou au niveau de l'enregistrement, pas au niveaux
des
> tables (ou entre enregistrements différents de la même table).
>
>
> Espérant être utile,
> Vanderghast, Access MVP
>
> "News Groups" wrote in message
> news:3f9cf850$0$233$
> > Bonjour à tous,
> >
> > Je suis sous SQL Server 2000.
> > Je désire, dans une table, affecter à certaines de mes colonnes des
> > contraintes CHECK comportant des sous requêtes de type SELECT
> > ..FROM..etc..faisant appel à d'autres colonnes de ma table ou d'autres
> > tables, Or le message suivant apparait à l'execution : "Les
sous-requêtes
> ne
> > sont pas pris en charge par les contraintes CHECK..".
> > Donc, comment puis-je décrire des contraintes sur colonnes faisant
> > intervenir d'autres colonnes de la table ou d'autres tables de ma base
> > De même comment décrire une contrainte verticale c'est à dire, une
> > contrainte qui, pour valider, la valeur saisie, fait appel à des
> > déjà saisie dans les autres enregistrements de ma table; exemple : sur
une
> > colonne MONTANT, la valeur possible ne doit pas être supérieure à la
> valeur
> > maxi de tous les montants déjà saisis dans les lignes précédantes ?
> >
> > Merci de vos réponses.
> >
> > Thierry.
> >
> >
>
>
Salut,
Certainement. Ainsi, pour une contrainte qui ne premettrait pas plus
qu'on enregistre plus de 4 joueurs par équipe:
CurrentProject.Connection.Execute "ALTER TABLE PlayersTeams ADD
CONSTRAINT PasPlusDeQuatreParEquipe CHECK( 4>=(SELECT COUNT(*) FROM
PlayersTeams As a WHERE a.TeamID=TeamID) ) ;"
Puisque je refère à la table elle-même, je dois utiliser un alias
( AS a ) et par défaut, les champs non-qualifiés par une table ( TeamID
a.TeamID=TeamID) refère à l'enregistrement actuellement ajouté/modifié
(mais non effacé car un CHECK n'est pas 'vérifié' si l'enregistrement est
effacé, seulement si il y a ajout ou modification).
Il FAUT passer par ADO, car DAO ne reconnaît pas cette extension
JET 4.0. On ne peut PAS passer par le designeur de requête (qui est basé
sur DAO dans un point-mdb). On peut donc ajouter cette contrainte à partir
de la fenêtre d'exécution immédiate (ou dans du code VBA).
Bien sûr, CHECK peut également être appliqué sur un contrainte de
champ ou sur une contrainte (abusivement dite) de table, tout comme en MS
SQL Server.
Access Developers' Handbook, chez Sybex mentionne cette syntaxe
(depuis Access 2000, il va de soi, puisqu'on parle d'une extension de Jet
4.0) avec un exemple impliquant une quantité à sortir devant être
ou égale à une quantité en stock. Il n'y a pas d'interface utilisateur qui
permet de "voir" ces contraintes (emmagasinées dans MSysObjets, colonne
Connect). L'énoncé du CHECK( ... ) ne peut PAS contenir d'énonocé VBA
ç'aurait été un hack pour avoir un trigger VBA! ).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" wrote in message
news:3f9d379d$0$231$
> Merci de tes conseils,
> Je pense effectivement que l'ensembles des contraintes liées à la
> métier de l'application sont apparemment à implémenter par des triggers.
> Par contre, je ne savais pas que Jet permet d'utiliser ce type de
contraite
> (hormis la déclaration des CONSTRAINT pour les intégrités
> peux tu m'en donner une syntaxe ou me diriger vers une source traitant
> cela.
>
> Merci.
> Thierry
>
> "Michel Walsh" a écrit dans le
message
> de news:
> > Salut,
> >
> >
> > Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
faut
> > passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
permis
> > qu'au niveau du champ, ou au niveau de l'enregistrement, pas au
> des
> > tables (ou entre enregistrements différents de la même table).
> >
> >
> > Espérant être utile,
> > Vanderghast, Access MVP
Salut,
Certainement. Ainsi, pour une contrainte qui ne premettrait pas plus
qu'on enregistre plus de 4 joueurs par équipe:
CurrentProject.Connection.Execute "ALTER TABLE PlayersTeams ADD
CONSTRAINT PasPlusDeQuatreParEquipe CHECK( 4>=(SELECT COUNT(*) FROM
PlayersTeams As a WHERE a.TeamID=TeamID) ) ;"
Puisque je refère à la table elle-même, je dois utiliser un alias
( AS a ) et par défaut, les champs non-qualifiés par une table ( TeamID
a.TeamID=TeamID) refère à l'enregistrement actuellement ajouté/modifié
(mais non effacé car un CHECK n'est pas 'vérifié' si l'enregistrement est
effacé, seulement si il y a ajout ou modification).
Il FAUT passer par ADO, car DAO ne reconnaît pas cette extension
JET 4.0. On ne peut PAS passer par le designeur de requête (qui est basé
sur DAO dans un point-mdb). On peut donc ajouter cette contrainte à partir
de la fenêtre d'exécution immédiate (ou dans du code VBA).
Bien sûr, CHECK peut également être appliqué sur un contrainte de
champ ou sur une contrainte (abusivement dite) de table, tout comme en MS
SQL Server.
Access Developers' Handbook, chez Sybex mentionne cette syntaxe
(depuis Access 2000, il va de soi, puisqu'on parle d'une extension de Jet
4.0) avec un exemple impliquant une quantité à sortir devant être
ou égale à une quantité en stock. Il n'y a pas d'interface utilisateur qui
permet de "voir" ces contraintes (emmagasinées dans MSysObjets, colonne
Connect). L'énoncé du CHECK( ... ) ne peut PAS contenir d'énonocé VBA
ç'aurait été un hack pour avoir un trigger VBA! ).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" <bjt_nwsgrp@yahoo.fr> wrote in message
news:3f9d379d$0$231$626a54ce@news.free.fr...
> Merci de tes conseils,
> Je pense effectivement que l'ensembles des contraintes liées à la
> métier de l'application sont apparemment à implémenter par des triggers.
> Par contre, je ne savais pas que Jet permet d'utiliser ce type de
contraite
> (hormis la déclaration des CONSTRAINT pour les intégrités
> peux tu m'en donner une syntaxe ou me diriger vers une source traitant
> cela.
>
> Merci.
> Thierry
>
> "Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le
message
> de news: ebSlrmInDHA.1296@TK2MSFTNGP09.phx.gbl...
> > Salut,
> >
> >
> > Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
faut
> > passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
permis
> > qu'au niveau du champ, ou au niveau de l'enregistrement, pas au
> des
> > tables (ou entre enregistrements différents de la même table).
> >
> >
> > Espérant être utile,
> > Vanderghast, Access MVP
Salut,
Certainement. Ainsi, pour une contrainte qui ne premettrait pas plus
qu'on enregistre plus de 4 joueurs par équipe:
CurrentProject.Connection.Execute "ALTER TABLE PlayersTeams ADD
CONSTRAINT PasPlusDeQuatreParEquipe CHECK( 4>=(SELECT COUNT(*) FROM
PlayersTeams As a WHERE a.TeamID=TeamID) ) ;"
Puisque je refère à la table elle-même, je dois utiliser un alias
( AS a ) et par défaut, les champs non-qualifiés par une table ( TeamID
a.TeamID=TeamID) refère à l'enregistrement actuellement ajouté/modifié
(mais non effacé car un CHECK n'est pas 'vérifié' si l'enregistrement est
effacé, seulement si il y a ajout ou modification).
Il FAUT passer par ADO, car DAO ne reconnaît pas cette extension
JET 4.0. On ne peut PAS passer par le designeur de requête (qui est basé
sur DAO dans un point-mdb). On peut donc ajouter cette contrainte à partir
de la fenêtre d'exécution immédiate (ou dans du code VBA).
Bien sûr, CHECK peut également être appliqué sur un contrainte de
champ ou sur une contrainte (abusivement dite) de table, tout comme en MS
SQL Server.
Access Developers' Handbook, chez Sybex mentionne cette syntaxe
(depuis Access 2000, il va de soi, puisqu'on parle d'une extension de Jet
4.0) avec un exemple impliquant une quantité à sortir devant être
ou égale à une quantité en stock. Il n'y a pas d'interface utilisateur qui
permet de "voir" ces contraintes (emmagasinées dans MSysObjets, colonne
Connect). L'énoncé du CHECK( ... ) ne peut PAS contenir d'énonocé VBA
ç'aurait été un hack pour avoir un trigger VBA! ).
Espérant être utile,
Vanderghast, Access MVP
"News Groups" wrote in message
news:3f9d379d$0$231$
> Merci de tes conseils,
> Je pense effectivement que l'ensembles des contraintes liées à la
> métier de l'application sont apparemment à implémenter par des triggers.
> Par contre, je ne savais pas que Jet permet d'utiliser ce type de
contraite
> (hormis la déclaration des CONSTRAINT pour les intégrités
> peux tu m'en donner une syntaxe ou me diriger vers une source traitant
> cela.
>
> Merci.
> Thierry
>
> "Michel Walsh" a écrit dans le
message
> de news:
> > Salut,
> >
> >
> > Jet le permet, mais pas MS SQL Server. Avec MS SQL Server, il
faut
> > passer par des Triggers, car sous MS SQL Server, les CHECK ne sont
permis
> > qu'au niveau du champ, ou au niveau de l'enregistrement, pas au
> des
> > tables (ou entre enregistrements différents de la même table).
> >
> >
> > Espérant être utile,
> > Vanderghast, Access MVP