-
projet ADP et num auto
Bonjour tout le monde,
Voila des semaines que je recherche la réponse à ma question mais rien à faire je ne trouve pas la solution. alors voici mon problème:
J'ai migré ma base de données access vers SQL serveur 2005. J'ai un problème avec une requete composée de 2 tables.
1 table = "matériel stock" avec un champ "num auto"(clé primaire) et 1 champ "num_reference"champs.
1 table = "details" avec 1 champ "num_reference" et 1 champ "designation".
Dans la requête, ces 2 tables sont liées par leur num_reference. La requete affiche le "num auto", le "num_reference" et la "designation". Tout s'affiche bien.
Le problème est quand je veux ajouter un enregistrement => IMPOSSIBLE. Je clique sur un des champs mais rien ne s'écrit, rien du tout.
Bon j'ai trouvé une moitié de solution, c'est de décocher le champ "designation" dans la requete et donc ce champ ne s'affiche plus dans le résultat de la requete. une fois le champ "designation" décoché, plus de problème, je peux rajouter un enregistrement. Mais j'ai vraiment besoin de ce champ "designation".
Pour des raisons de clarté et de développement, j'ai besoin de garder ces 2 tables bien distinctes.
Y a il une solution? car sous access ca marche parfaitement.
Merci d'avance
runnermat
-
bonjour,
quelles sont :
- le message erreur
- votre environnement de dev
- le morceau de codes
Louis Malta
-
re réponse
Oups oublié certains détails:
Tout d'abord j'ai migré ma base de donnée vers sql server en créant un projet ADP. Je voulais garder l'interface access(2007).
Alors code de ma requete:
SELECT TOP 100000 dbo.[Tbl Matériel Client].Numéroauto, dbo.[Tbl Matériel Client].[Num-Instal], dbo.[Tbl Matériel Client].[Num-Contrat],
dbo.[Tbl Matériel Client].[Num-Référence], dbo.[Tbl Matériel Client].Qté, dbo.[Tbl Matériel Client].Code, dbo.[Tbl Matériel Client].[Stock tech],
dbo.[03Designation].Designation
FROM dbo.[Tbl Matériel Client] INNER JOIN
dbo.[03Designation] ON dbo.[Tbl Matériel Client].[Num-Référence] = dbo.[03Designation].Num_reference
ORDER BY dbo.[Tbl Matériel Client].Numéroauto
ou le champ "numéroauto" est de type "int" avec indentity = "oui"
Alors pour les messages d'erreur:
- alors quand je veux ajouter un enregistrement via la requete pas de message d'erreur, impossible de cliquer et d'écrire dans une case vide.
- ajouter un enregistrement via le formulaire pas de message d'erreur mais impossible d'écrire dans le champ vide sans liste déroulante. Mais par contre avec liste déroulante voici le message d'erreur:
"Microsoft access ne peut trouver l'objet " <nom de la table ou requete> "
Une fois cliqué sur tous les champ vide ou champ avec liste déroulante, meme plus moyen de dérouler la liste.
Voila voila j'ai essayé d'etre le plus précis possible.
-
Bonjour,
Sous l'interface ACCESS je ne sais pas comment cela se présent.
Mais en gros vous tentez de faire un insert sur un table jointe par une référence externe. or lorsque vous activer (selection dans la liste ou autre) une fonctionnalité dans votre IHM cette derniére tente de passer en mode insert (sur une table liée c'est pas le bonheur) et donc vous tomber en insertion sur table multiple
il faut faut donc gérer le mode édition (INSERT , UPDATE, DELETE) manuellement.
-
Petite remarque.
L'Identity de SQL Server est beaucoup rigoureux que le numéro auto d'Access.
Identity attibue le numéro uniquement au moment de l'Update.
Access attribue un numéro dès que l'on commence à saisie des données même s'il n'y a pas d'Update. D'ailleurs, si l'on fait Esc avant de de valider la saisie, le compteur passe au numéro suivant.
Sur SQL Server, il faut donc valider l'enregistrement parent afin de récupérer la clé primaire pour la donner à l'enregistrement enfant.