OVH Cloud OVH Cloud

Recordset

10 réponses
Avatar
Robert Parise
Est-ce qu'une source de donnée d'un sous-formulaire peut-être un recordset?

10 réponses

Avatar
Raymond [mvp]
Bonjour.

Un recordset est un jeu de données à lier à un formulaire, un état, un
contrôle etc ... Tout jeu de données est un recordset (pléonasme)
jeu de données = source du formulaire
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: UuRId.1650$
Est-ce qu'une source de donnée d'un sous-formulaire peut-être un
recordset?



Avatar
Robert Parise
J'utilise une table temporaire pour générer un affichage dans un formulaire.
En appuyant sur un bouton, une programmation VBA envoie des données dans une
table. Un formulaire s'ouvre en affichant ces données dans un
sous-formulaire en continu.
Mais si un autre utilisateur veut visualiser les mêmes données, ma
programmation ajoute d'autres données et elles apparaissent en double dans
mon formulaie
Je voudrais ne plus utiliser une table temporaire, mais plutot utiliser un
recordset local dans l'ordinateur de l'utilisateur comme source de donné.
Donc, plus de table temporaire.
PS j'utilise Access (extention .adp) avec SQL Server

Merci




"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

Un recordset est un jeu de données à lier à un formulaire, un état, un
contrôle etc ... Tout jeu de données est un recordset (pléonasme)
jeu de données = source du formulaire
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: UuRId.1650$
Est-ce qu'une source de donnée d'un sous-formulaire peut-être un
recordset?







Avatar
Raymond [mvp]
je ne suis pas le spécialiste sqlserveur, mais tu n'as pas besoin de table
temporaire à mon avis; chaque projet adp doit pouvoir se connecter sur la
base sql et chacun travailler normalement avec les données disponibles dans
la base. il n'y a pas à créer de recordset local pour résoudre ton problème.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: EO6Jd.17465$
J'utilise une table temporaire pour générer un affichage dans un
formulaire.
En appuyant sur un bouton, une programmation VBA envoie des données dans
une
table. Un formulaire s'ouvre en affichant ces données dans un
sous-formulaire en continu.
Mais si un autre utilisateur veut visualiser les mêmes données, ma
programmation ajoute d'autres données et elles apparaissent en double dans
mon formulaie
Je voudrais ne plus utiliser une table temporaire, mais plutot utiliser un
recordset local dans l'ordinateur de l'utilisateur comme source de donné.
Donc, plus de table temporaire.
PS j'utilise Access (extention .adp) avec SQL Server

Merci




"Raymond [mvp]" a écrit dans le message
de news: %
Bonjour.

Un recordset est un jeu de données à lier à un formulaire, un état, un
contrôle etc ... Tout jeu de données est un recordset (pléonasme)
jeu de données = source du formulaire
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: UuRId.1650$
Est-ce qu'une source de donnée d'un sous-formulaire peut-être un
recordset?











Avatar
Robert Parise
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est relié a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile, mail etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de téléphone, de
télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en continue
Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca c'est OK.
Je veux avoir les communications à coté des contacts. sans avoir de champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire sur le
serveur et je la rempli par programmation. Cette table peut-être utiliser
par tous les autres utilisateurs, ce qui me créera un problème su deux
utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le formulaire

Je me dis qu'il est possible de stocker le résultat de ma programmation dans
un recordset (dans la mémoire de l'ordinateur de l'utilisateur, une table
créer dans la mémoire de l'ordinateur et non des données stockées sur le
serveur) et que mon formulaire utilise ces données virtuelles pour remplir
ses champs.

Merci de votre aide

Robert


"Raymond [mvp]" a écrit dans le message de
news:
je ne suis pas le spécialiste sqlserveur, mais tu n'as pas besoin de table
temporaire à mon avis; chaque projet adp doit pouvoir se connecter sur la
base sql et chacun travailler normalement avec les données disponibles
dans la base. il n'y a pas à créer de recordset local pour résoudre ton
problème.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: EO6Jd.17465$
J'utilise une table temporaire pour générer un affichage dans un
formulaire.
En appuyant sur un bouton, une programmation VBA envoie des données dans
une
table. Un formulaire s'ouvre en affichant ces données dans un
sous-formulaire en continu.
Mais si un autre utilisateur veut visualiser les mêmes données, ma
programmation ajoute d'autres données et elles apparaissent en double
dans mon formulaie
Je voudrais ne plus utiliser une table temporaire, mais plutot utiliser
un recordset local dans l'ordinateur de l'utilisateur comme source de
donné.
Donc, plus de table temporaire.
PS j'utilise Access (extention .adp) avec SQL Server

Merci




"Raymond [mvp]" a écrit dans le message
de news: %
Bonjour.

Un recordset est un jeu de données à lier à un formulaire, un état, un
contrôle etc ... Tout jeu de données est un recordset (pléonasme)
jeu de données = source du formulaire
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: UuRId.1650$
Est-ce qu'une source de donnée d'un sous-formulaire peut-être un
recordset?















Avatar
Raymond [mvp]
J'espère que tu te rends compte de la différence entre ton premier post et
ton troisième post. un simple recordset, ensuite une base sql et projet et
maintenant un sous-sous-formulaire avec table temporaire qu'il faut passer
en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par des
tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir donner la
bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est relié
a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile, mail etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de téléphone, de
télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en continue
Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca c'est OK.
Je veux avoir les communications à coté des contacts. sans avoir de champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire sur
le serveur et je la rempli par programmation. Cette table peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un problème su
deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le formulaire

Je me dis qu'il est possible de stocker le résultat de ma programmation
dans un recordset (dans la mémoire de l'ordinateur de l'utilisateur, une
table créer dans la mémoire de l'ordinateur et non des données stockées
sur le serveur) et que mon formulaire utilise ces données virtuelles pour
remplir ses champs.

Merci de votre aide

Robert


Avatar
Robert Parise
Et bien oui, maintenant avec vos explications.
Je vais faire une base .mdb et vous l'envoyer au cours des prochains jours.
J'ai trouver une solution à mes problèmes éventuels: un champ CreatedBy dans
ma table temporaire.

Merci


"Raymond [mvp]" a écrit dans le message de
news: OXs1p%
J'espère que tu te rends compte de la différence entre ton premier post et
ton troisième post. un simple recordset, ensuite une base sql et projet et
maintenant un sous-sous-formulaire avec table temporaire qu'il faut passer
en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par des
tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir donner
la bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ
CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est relié
a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile, mail
etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de téléphone, de
télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en continue
Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca c'est OK.
Je veux avoir les communications à coté des contacts. sans avoir de
champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire sur
le serveur et je la rempli par programmation. Cette table peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un problème
su deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le formulaire

Je me dis qu'il est possible de stocker le résultat de ma programmation
dans un recordset (dans la mémoire de l'ordinateur de l'utilisateur, une
table créer dans la mémoire de l'ordinateur et non des données stockées
sur le serveur) et que mon formulaire utilise ces données virtuelles pour
remplir ses champs.

Merci de votre aide

Robert






Avatar
Gafish
Bonjour,

Dans un projet adp, il n'y a de mémoire pas de requêtes (ca fait un moment
que je n'en ai plus fait) mais en revanche tu peux peut-être alimenter tes
contacts et tes communications avec une procédure stockée que tu appeles via
access en lui injectant des paramètres. Ainsi plus de table temporaire.

Arnaud

"Robert Parise" a écrit dans le message news:
SUeJd.33569$
Et bien oui, maintenant avec vos explications.
Je vais faire une base .mdb et vous l'envoyer au cours des prochains
jours.

J'ai trouver une solution à mes problèmes éventuels: un champ CreatedBy
dans

ma table temporaire.

Merci


"Raymond [mvp]" a écrit dans le message
de

news: OXs1p%
J'espère que tu te rends compte de la différence entre ton premier post
et


ton troisième post. un simple recordset, ensuite une base sql et projet
et


maintenant un sous-sous-formulaire avec table temporaire qu'il faut
passer


en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par des
tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir donner
la bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ
CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est
relié



a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile, mail
etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de téléphone,
de



télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en
continue



Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca c'est
OK.



Je veux avoir les communications à coté des contacts. sans avoir de
champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire
sur



le serveur et je la rempli par programmation. Cette table peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un problème
su deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le formulaire

Je me dis qu'il est possible de stocker le résultat de ma programmation
dans un recordset (dans la mémoire de l'ordinateur de l'utilisateur,
une



table créer dans la mémoire de l'ordinateur et non des données stockées
sur le serveur) et que mon formulaire utilise ces données virtuelles
pour



remplir ses champs.

Merci de votre aide

Robert










Avatar
Robert Parise
Voici ma programmation pour remplir ma table temporaire. Il me semble
impossible de mettre cela dans une procédure. De plus, j'utilise un SELECT
CASE dans ma programmation:
Ce que je veux, c'est stocker dans la mémoire de l'ordinateur local le
recordset RstAdd pour le réutilisé comme RecordSource dans un autre
formulaire.

Merci


rstContact.Open "SELECT * FROM tblContact WHERE [dblCompanyLineID] = '" &
Forms!frmContactSearch!subContactSearch.Form!txt12 & "' ORDER BY strLastName
", Cn, adOpenKeyset, adLockOptimistic

If rstContact.RecordCount > 0 Then
rstContact.MoveFirst
Do
RstAdd.Open "SELECT * FROM tblCompanyContactCommunicationTmp ", Cn,
adOpenKeyset, adLockOptimistic
With RstAdd
.AddNew
!dblCompanyLineID =
Forms!frmContactSearch!subContactSearch.Form!txt12
!dblContactLineID = rstContact!dblContactLineID
!strName = IIf(IsNull(rstContact!strTitle), "",
rstContact!strTitle & " ") & IIf(IsNull(rstContact!strFirstName), "",
rstContact!strFirstName & " ") & IIf(IsNull(rstContact!strMiddleName), "",
rstContact!strMiddleName & " ") & IIf(IsNull(rstContact!strLastName), "",
rstContact!strLastName & " ") & IIf(IsNull(rstContact!strSuffix), "",
rstContact!strSuffix & " ")
!strJobTitle = DLookup("strJobTitle", "tblJobTitle",
"strJobTitleID = '" & rstContact!strJobTitleID & "'")
!dtmCreated = Now()
rstContactCommunication.Open "SELECT
tblContactCommunication.dblContactLineID,
tblContactCommunication.strCommunicationTypeID,
tblCommunicationType.strCommunicationType, " & _
" tblContactCommunication.strCommunication,
tblContactCommunication.strCommunicationExtention ,
tblCommunicationType.strSort FROM tblContactCommunication " & _
"INNER JOIN tblCommunicationType ON
tblContactCommunication.strCommunicationTypeID =
dbo.tblCommunicationType.strCommunicationTypeID " & _
"WHERE [dblContactLineID] = '" & rstContact!dblContactLineID &
"' ORDER BY tblContactCommunication.dblContactLineID,
tblCommunicationType.strSort", Cn, adOpenKeyset, adLockOptimistic

If rstContactCommunication.RecordCount > 0 Then
Do
rstContactCommunication.MoveFirst
For I = 1 To rstContactCommunication.RecordCount
Select Case I
Case 1
!str00 =
rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str01 =
rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str01 =
Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str01 =
Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x "
& rstContactCommunication!strCommunicationExtention
End If
End If
Case 2
!str10 =
rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str11 =
rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str11 =
Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str11 =
Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x "
& rstContactCommunication!strCommunicationExtention
End If
End If
Case 3
ETC........

End Select
rstContactCommunication.MoveNext
Next I
Loop While (rstContactCommunication.EOF = False)
End If
rstContactCommunication.Close
Set rstContactCommunication = Nothing
.UpDate
End With
RstAdd.Close
Set RstAdd = Nothing
rstContact.MoveNext
Loop While (rstContact.EOF = False)
rstContact.Close
Set rstContact = Nothing
End If




"Gafish" a écrit dans le message de news:

Bonjour,

Dans un projet adp, il n'y a de mémoire pas de requêtes (ca fait un moment
que je n'en ai plus fait) mais en revanche tu peux peut-être alimenter tes
contacts et tes communications avec une procédure stockée que tu appeles
via
access en lui injectant des paramètres. Ainsi plus de table temporaire.

Arnaud

"Robert Parise" a écrit dans le message news:
SUeJd.33569$
Et bien oui, maintenant avec vos explications.
Je vais faire une base .mdb et vous l'envoyer au cours des prochains
jours.

J'ai trouver une solution à mes problèmes éventuels: un champ CreatedBy
dans

ma table temporaire.

Merci


"Raymond [mvp]" a écrit dans le message
de

news: OXs1p%
J'espère que tu te rends compte de la différence entre ton premier post
et


ton troisième post. un simple recordset, ensuite une base sql et projet
et


maintenant un sous-sous-formulaire avec table temporaire qu'il faut
passer


en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par des
tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir
donner
la bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message de
news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ
CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est
relié



a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile, mail
etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de téléphone,
de



télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en
continue



Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca c'est
OK.



Je veux avoir les communications à coté des contacts. sans avoir de
champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans
un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire
sur



le serveur et je la rempli par programmation. Cette table peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un
problème
su deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le
deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le formulaire

Je me dis qu'il est possible de stocker le résultat de ma
programmation
dans un recordset (dans la mémoire de l'ordinateur de l'utilisateur,
une



table créer dans la mémoire de l'ordinateur et non des données
stockées
sur le serveur) et que mon formulaire utilise ces données virtuelles
pour



remplir ses champs.

Merci de votre aide

Robert














Avatar
Gafish
Regarde peut etre ce fil :
http://minilien.com/?4ZxeKsZAvU
Sinon pour ton select case, il y a une instruction Sql équivalent reconnu
par SQL Server et construite de cette manière (à mettre à l'interieur du
SELECT de ta requête)

SELECT ...., ..... CASE Variable
WHEN Valeur THEN ValeurRetour
WHEN ....
ELSE ValeurDefaut
END
FROM .....

Tu peux d'ailleurs la construire d'une autre manière
CASE
WHEN Variable = Valeur THEN ....

c'est à dire tester la variable dans le when et ne pas la mettre sur le
case.

Arnaud


"Robert Parise" a écrit dans le message news:
IJqJd.49034$
Voici ma programmation pour remplir ma table temporaire. Il me semble
impossible de mettre cela dans une procédure. De plus, j'utilise un
SELECT

CASE dans ma programmation:
Ce que je veux, c'est stocker dans la mémoire de l'ordinateur local le
recordset RstAdd pour le réutilisé comme RecordSource dans un autre
formulaire.

Merci


rstContact.Open "SELECT * FROM tblContact WHERE [dblCompanyLineID] = '" &
Forms!frmContactSearch!subContactSearch.Form!txt12 & "' ORDER BY
strLastName

", Cn, adOpenKeyset, adLockOptimistic

If rstContact.RecordCount > 0 Then
rstContact.MoveFirst
Do
RstAdd.Open "SELECT * FROM tblCompanyContactCommunicationTmp ",
Cn,

adOpenKeyset, adLockOptimistic
With RstAdd
.AddNew
!dblCompanyLineID > Forms!frmContactSearch!subContactSearch.Form!txt12
!dblContactLineID = rstContact!dblContactLineID
!strName = IIf(IsNull(rstContact!strTitle), "",
rstContact!strTitle & " ") & IIf(IsNull(rstContact!strFirstName), "",
rstContact!strFirstName & " ") & IIf(IsNull(rstContact!strMiddleName), "",
rstContact!strMiddleName & " ") & IIf(IsNull(rstContact!strLastName), "",
rstContact!strLastName & " ") & IIf(IsNull(rstContact!strSuffix), "",
rstContact!strSuffix & " ")
!strJobTitle = DLookup("strJobTitle", "tblJobTitle",
"strJobTitleID = '" & rstContact!strJobTitleID & "'")
!dtmCreated = Now()
rstContactCommunication.Open "SELECT
tblContactCommunication.dblContactLineID,
tblContactCommunication.strCommunicationTypeID,
tblCommunicationType.strCommunicationType, " & _
" tblContactCommunication.strCommunication,
tblContactCommunication.strCommunicationExtention ,
tblCommunicationType.strSort FROM tblContactCommunication " & _
"INNER JOIN tblCommunicationType ON
tblContactCommunication.strCommunicationTypeID > dbo.tblCommunicationType.strCommunicationTypeID " & _
"WHERE [dblContactLineID] = '" & rstContact!dblContactLineID &
"' ORDER BY tblContactCommunication.dblContactLineID,
tblCommunicationType.strSort", Cn, adOpenKeyset, adLockOptimistic

If rstContactCommunication.RecordCount > 0 Then
Do
rstContactCommunication.MoveFirst
For I = 1 To rstContactCommunication.RecordCount
Select Case I
Case 1
!str00 > rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str01 > rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str01 > Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str01 > Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x
"

& rstContactCommunication!strCommunicationExtention
End If
End If
Case 2
!str10 > rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str11 > rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str11 > Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str11 > Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x
"

& rstContactCommunication!strCommunicationExtention
End If
End If
Case 3
ETC........

End Select
rstContactCommunication.MoveNext
Next I
Loop While (rstContactCommunication.EOF = False)
End If
rstContactCommunication.Close
Set rstContactCommunication = Nothing
.UpDate
End With
RstAdd.Close
Set RstAdd = Nothing
rstContact.MoveNext
Loop While (rstContact.EOF = False)
rstContact.Close
Set rstContact = Nothing
End If




"Gafish" a écrit dans le message de news:

Bonjour,

Dans un projet adp, il n'y a de mémoire pas de requêtes (ca fait un
moment


que je n'en ai plus fait) mais en revanche tu peux peut-être alimenter
tes


contacts et tes communications avec une procédure stockée que tu appeles
via
access en lui injectant des paramètres. Ainsi plus de table temporaire.

Arnaud

"Robert Parise" a écrit dans le message
news:


SUeJd.33569$
Et bien oui, maintenant avec vos explications.
Je vais faire une base .mdb et vous l'envoyer au cours des prochains
jours.

J'ai trouver une solution à mes problèmes éventuels: un champ CreatedBy
dans

ma table temporaire.

Merci


"Raymond [mvp]" a écrit dans le
message



de
news: OXs1p%
J'espère que tu te rends compte de la différence entre ton premier
post




et
ton troisième post. un simple recordset, ensuite une base sql et
projet




et
maintenant un sous-sous-formulaire avec table temporaire qu'il faut
passer


en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par
des




tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir
donner
la bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message
de




news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ
CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est
relié



a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile,
mail





etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de
téléphone,





de
télécopie, de mobile, de e-mail pour chaque contact. La quantité de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en
continue



Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca
c'est





OK.
Je veux avoir les communications à coté des contacts. sans avoir de
champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu, dans
un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table temporaire
sur



le serveur et je la rempli par programmation. Cette table peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un
problème
su deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le
deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le
formulaire






Je me dis qu'il est possible de stocker le résultat de ma
programmation
dans un recordset (dans la mémoire de l'ordinateur de l'utilisateur,
une



table créer dans la mémoire de l'ordinateur et non des données
stockées
sur le serveur) et que mon formulaire utilise ces données virtuelles
pour



remplir ses champs.

Merci de votre aide

Robert


















Avatar
Robert Parise
J'ai tester rapidement mais ca ne fonctionne pas. Je vais essayer autre
chose plus tard.
Est-ce que quelqu'un a déjà essayé quelque chose comme cela?

Private Sub Form_Open(Cancel As Integer)
Dim Cn As ADODB.Connection
Dim rst As New ADODB.Recordset
Set Cn = CurrentProject.Connection
rst.Open "SELECT * FROM tblContact ", Cn, adOpenKeyset, adLockOptimistic
Me.RecordSource = rst
End sub


"Gafish" a écrit dans le message de news:

Regarde peut etre ce fil :
http://minilien.com/?4ZxeKsZAvU
Sinon pour ton select case, il y a une instruction Sql équivalent reconnu
par SQL Server et construite de cette manière (à mettre à l'interieur du
SELECT de ta requête)

SELECT ...., ..... CASE Variable
WHEN Valeur THEN ValeurRetour
WHEN ....
ELSE ValeurDefaut
END
FROM .....

Tu peux d'ailleurs la construire d'une autre manière
CASE
WHEN Variable = Valeur THEN ....

c'est à dire tester la variable dans le when et ne pas la mettre sur le
case.

Arnaud


"Robert Parise" a écrit dans le message news:
IJqJd.49034$
Voici ma programmation pour remplir ma table temporaire. Il me semble
impossible de mettre cela dans une procédure. De plus, j'utilise un
SELECT

CASE dans ma programmation:
Ce que je veux, c'est stocker dans la mémoire de l'ordinateur local le
recordset RstAdd pour le réutilisé comme RecordSource dans un autre
formulaire.

Merci


rstContact.Open "SELECT * FROM tblContact WHERE [dblCompanyLineID] = '" &
Forms!frmContactSearch!subContactSearch.Form!txt12 & "' ORDER BY
strLastName

", Cn, adOpenKeyset, adLockOptimistic

If rstContact.RecordCount > 0 Then
rstContact.MoveFirst
Do
RstAdd.Open "SELECT * FROM tblCompanyContactCommunicationTmp ",
Cn,

adOpenKeyset, adLockOptimistic
With RstAdd
.AddNew
!dblCompanyLineID >> Forms!frmContactSearch!subContactSearch.Form!txt12
!dblContactLineID = rstContact!dblContactLineID
!strName = IIf(IsNull(rstContact!strTitle), "",
rstContact!strTitle & " ") & IIf(IsNull(rstContact!strFirstName), "",
rstContact!strFirstName & " ") & IIf(IsNull(rstContact!strMiddleName),
"",
rstContact!strMiddleName & " ") & IIf(IsNull(rstContact!strLastName), "",
rstContact!strLastName & " ") & IIf(IsNull(rstContact!strSuffix), "",
rstContact!strSuffix & " ")
!strJobTitle = DLookup("strJobTitle", "tblJobTitle",
"strJobTitleID = '" & rstContact!strJobTitleID & "'")
!dtmCreated = Now()
rstContactCommunication.Open "SELECT
tblContactCommunication.dblContactLineID,
tblContactCommunication.strCommunicationTypeID,
tblCommunicationType.strCommunicationType, " & _
" tblContactCommunication.strCommunication,
tblContactCommunication.strCommunicationExtention ,
tblCommunicationType.strSort FROM tblContactCommunication " & _
"INNER JOIN tblCommunicationType ON
tblContactCommunication.strCommunicationTypeID >> dbo.tblCommunicationType.strCommunicationTypeID " & _
"WHERE [dblContactLineID] = '" & rstContact!dblContactLineID
&
"' ORDER BY tblContactCommunication.dblContactLineID,
tblCommunicationType.strSort", Cn, adOpenKeyset, adLockOptimistic

If rstContactCommunication.RecordCount > 0 Then
Do
rstContactCommunication.MoveFirst
For I = 1 To rstContactCommunication.RecordCount
Select Case I
Case 1
!str00 >> rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str01 >> rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str01 >> Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str01 >> Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x
"

& rstContactCommunication!strCommunicationExtention
End If
End If
Case 2
!str10 >> rstContactCommunication!strCommunicationType
If
rstContactCommunication!strCommunicationTypeID = "E1" Or
rstContactCommunication!strCommunicationTypeID = "E2" Then
!str11 >> rstContactCommunication!strCommunication
Else
If
IsNull(rstContactCommunication!strCommunicationExtention) Then
!str11 >> Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&")
Else
!str11 >> Format(rstContactCommunication!strCommunication, "(&&&) &&&-&&&&") & " x
"

& rstContactCommunication!strCommunicationExtention
End If
End If
Case 3
ETC........

End Select
rstContactCommunication.MoveNext
Next I
Loop While (rstContactCommunication.EOF = False)
End If
rstContactCommunication.Close
Set rstContactCommunication = Nothing
.UpDate
End With
RstAdd.Close
Set RstAdd = Nothing
rstContact.MoveNext
Loop While (rstContact.EOF = False)
rstContact.Close
Set rstContact = Nothing
End If




"Gafish" a écrit dans le message de news:

Bonjour,

Dans un projet adp, il n'y a de mémoire pas de requêtes (ca fait un
moment


que je n'en ai plus fait) mais en revanche tu peux peut-être alimenter
tes


contacts et tes communications avec une procédure stockée que tu
appeles
via
access en lui injectant des paramètres. Ainsi plus de table temporaire.

Arnaud

"Robert Parise" a écrit dans le message
news:


SUeJd.33569$
Et bien oui, maintenant avec vos explications.
Je vais faire une base .mdb et vous l'envoyer au cours des prochains
jours.

J'ai trouver une solution à mes problèmes éventuels: un champ
CreatedBy
dans

ma table temporaire.

Merci


"Raymond [mvp]" a écrit dans le
message



de
news: OXs1p%
J'espère que tu te rends compte de la différence entre ton premier
post




et
ton troisième post. un simple recordset, ensuite une base sql et
projet




et
maintenant un sous-sous-formulaire avec table temporaire qu'il faut
passer


en table virtuelle.
Même en sql on peut travailler avec des formulaires sans passer par
des




tables provisoires ou virtuelles. je ne comprend pas du tout ton
organisation.
Je passe la main aux spécialistes sql car je pense ne pas pouvoir
donner
la bonne solution.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Robert Parise" a écrit dans le message
de




news: coaJd.28487$
C'est que c'est un peu plus complexe..

Ma structure de table est la suivante:
Table Compagnie avec une clé primaire: CompagnieID.
Table Contacts avec 1 clé primaire: ContactID et un autre champ
CompanieID
Chaque contact peut être relié a une companie. Si un contact n'est
relié



a
aucune compagnie, la valeur dans CompagnieID est 0 (compagnie
bidon)
Table tblCommunicationTyle, clé primaire ContactCommunicationID qui
détermine le type de communication (téléphone, télécopie, mobile,
mail





etc
Table ContactCommunication avec 2 clé primaires: ContactID et
ContactCommunicationID. Cette table contient des numéro de
téléphone,





de
télécopie, de mobile, de e-mail pour chaque contact. La quantité
de
communication dépent du contact.

J'ai un formulaire Compagnie qui contient un sous-formulaire en
continue



Contact.
Donc, les contacts reliés a la compagnie apparaissent tous. Ca
c'est





OK.
Je veux avoir les communications à coté des contacts. sans avoir de
champs
vides. (voir jpg de mon formulaire).

Je me peux pas reproduire ma programmation en requête.
C'est comme si j'aurais besoin d'un sous-formulaire en continu,
dans
un
sous-formulaire en continu (ce que Access ne permet pas)

Pour contourner cette impossibilité, j'ai créer une table
temporaire
sur



le serveur et je la rempli par programmation. Cette table
peut-être
utiliser par tous les autres utilisateurs, ce qui me créera un
problème
su deux utilisateurs accèdent aux données simultanément.
Le premier enclanche ma programmation et voit le résultat. Le
deuxième
enclanche la programmation. Les données sont doublé dans la table
temporaire. Donc les données apparaissent en double dans le
formulaire






Je me dis qu'il est possible de stocker le résultat de ma
programmation
dans un recordset (dans la mémoire de l'ordinateur de
l'utilisateur,
une



table créer dans la mémoire de l'ordinateur et non des données
stockées
sur le serveur) et que mon formulaire utilise ces données
virtuelles
pour



remplir ses champs.

Merci de votre aide

Robert