|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 4 ![]() |
Bonjour,
J'ai un problème lors de l'utilisation d'une clef primaire avec un type binaire dans un formulaire. Pour faire simple, je dois créer un formulaire Access qui utilise des tables venant d'une base Oracle (que je ne peux pas modifier). La clef primaire et les clefs étrangères de chaque table sont du type RAW(16) soit un code binaire de 128 bits. Access 2007 interprète le RAW(16) en type binaire. Il n'y a aucun souci lors de la création d'une requête SQL et de son exécution. Les données sont correctement liés. Le problème se situe au niveau du formulaire où le row source ne semble pas être interprété et comparé correctement avec le champs correspondant du record source. Avez vous déjà rencontrer ce type de problème ? et si oui, comment l'avez vous résolu ? Cordialement, Sébastien |
|
|
00
|
|
|
#2 | |
![]() ![]() ![]() |
Bonjour,
Non, je n'ai pas rencontré ce type de pb mais bon... Citation:
Comment est défini le RecordSource du formulaire ? Argy
__________________
Ils comptent sur vous... Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment. Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010 MDB Viewer : Visionneuse Access v4.0 |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 4 ![]() |
Le record source est une table qui contient une clef primaire binaire et une clef étrangère également binaire.
J'ai ajouté des copies d'écran pour illustrer le problème. Sébastien |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() |
Humm, tel que cela se présente, il semble que la table Oracle est liée.
Personnellement, je ne procéderais pas ainsi et je passerais plutôt par ADO en construisant dynamiquement la source via une procédure idoine qui effectuerait une conversion de la valeur. J'ose supposer que cette dernière est l'équivalent d'un GUID donc que l'on peut assimiler à type String et non un Binaire comme le fait Access... Mais Access est un peu plus capricieux de ce coté là... Argy
__________________
Ils comptent sur vous... Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment. Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010 MDB Viewer : Visionneuse Access v4.0 |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : juin 2011 Messages : 4 ![]() |
Citation:
Citation:
Sébastien |
||
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() |
Humm, je n'ai aucun moyen de me mettre dans un contexte Oracle...
Je te fournis donc cette exemple de procédure écrite sur le pouce (que j'effacerai après ).Les champs et nom de table sont à adapter et les paramètres de connexion à stipuler. Code :
__________________
Ils comptent sur vous... Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment. Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010 MDB Viewer : Visionneuse Access v4.0 |
||
|
|
10
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 4 ![]() |
Merci Argy de ton aide pour m'avoir fait connaitre la fonction stringFromGUID.
Encore une dernière question: Comment créer des tables (liées à Oracle pour les données) pour lesquelles les champs binaires sont transformés en champ string (effectuant la conversion vers GUID)? Seb |
|
|
00
|
|
|
#8 | ||
![]() ![]() ![]() |
Si elle sont transformée en String, il suffit de créer manuellement la table avec le bon type de champ. On procède alors à un éventuel DELETE via la méthode Execute de l'objet Database représentant CurrentDB() puis à un INSERT INTO qui puiserait les données dans le Recordset.
On peut encore procéder à un SELECT INTO selon la nécessité de créer à chaque fois la table. Pour créer la table via VBA, on peut écrire une fonction, soit par exemple : Code :
où SQL représente la chaîne SQL de la clause INSERT avec les valeurs converties... Argy
__________________
Ils comptent sur vous... Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment. Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010 MDB Viewer : Visionneuse Access v4.0 |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com