OVH Cloud OVH Cloud

mon code Update d'une table à l'autre ...

6 réponses
Avatar
fth
Bonjour,
voici la situation: une table sur un serveur SQL ("dbo_benevole") et une
table en locale ("locbenev").
Un premier ecran au demarage de l'appli (CCMAIN) avec un bouton (Command2).

L'objectif est donc d'aller voir sur la table distante, de vérifier si le
record existe deja et si pas, le creer dans la table locale.
voici mon code.
EN fait, il ne fait aucune selection, il ajoute toute la table distante.

Private Sub Command2_Click()
'DoCmd.SetWarnings False

'si le record "ID" de la table "dbo_BENEVOLES" n'existe pas dans la table
"LocBenev",
'ajouter le record présent dans "dbo_BENEVOLES" dans la table "LocBenev"


If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) Then

DoCmd.RunSQL ("INSERT INTO LocBenev ( ID, TITLE, LANG, ACCEPTED, FIRSTNAME,
LASTNAME, BIRTHDAY, NATIONALITY, " & _
"ADDRESS, [NUMBER], ZIP, CITY, COUNTRY, PHONE, PHONE2, FAX, GSM, EMAIL,
EMAIL2, CATEG, " & _
"SECTOR, SSECTOR, SZONE, LEVELRESP, KEYWORDS, EDTION05, COMPANY, OPTIN,
PICTURE, FR1, NL1, UK1, " & _
"ES1, OTHER, OTHER1, BAR, ARTISTE, LOGE, MOBILE, CHAUFFEUR, INFO, PRESS,
DECO, STEWARD, EXOS, " & _
"VIP, TICKET, ART, CATERING, TRACT, ORGANISATION, MERCHANDISING, ENQUETE,
SOUK, WORK2004, " & _
"SECTOR2004, WORK2003, SECTOR2003, WORK2002, SECTOR2002, TEXTE, AGREE,
[DATETIME], HOSTEIP )" & _
"SELECT dbo_BENEVOLES.ID, dbo_BENEVOLES.TITLE, dbo_BENEVOLES.LANG,
dbo_BENEVOLES.ACCEPTED, " & _
"dbo_BENEVOLES.FIRSTNAME , dbo_BENEVOLES.LASTNAME, dbo_BENEVOLES.BIRTHDAY, "
& _
"dbo_BENEVOLES.NATIONALITY, dbo_BENEVOLES.ADDRESS, dbo_BENEVOLES.NUMBER,
dbo_BENEVOLES.ZIP, " & _
"dbo_BENEVOLES.CITY, dbo_BENEVOLES.COUNTRY, dbo_BENEVOLES.PHONE,
dbo_BENEVOLES.PHONE2," & _
"dbo_BENEVOLES.FAX, dbo_BENEVOLES.GSM, dbo_BENEVOLES.EMAIL,
dbo_BENEVOLES.EMAIL2, " & _
"dbo_BENEVOLES.CATEG, dbo_BENEVOLES.SECTOR, dbo_BENEVOLES.SSECTOR,
dbo_BENEVOLES.SZONE, " & _
"dbo_BENEVOLES.LEVELRESP, dbo_BENEVOLES.KEYWORDS, dbo_BENEVOLES.EDTION05, "
& _
"dbo_BENEVOLES.COMPANY, dbo_BENEVOLES.OPTIN, dbo_BENEVOLES.PICTURE, " & _
"dbo_BENEVOLES.FR1, dbo_BENEVOLES.NL1, dbo_BENEVOLES.UK1, dbo_BENEVOLES.ES1,
" & _
"dbo_BENEVOLES.OTHER, dbo_BENEVOLES.OTHER1, dbo_BENEVOLES.BAR,
dbo_BENEVOLES.ARTISTE, " & _
"dbo_BENEVOLES.LOGE, dbo_BENEVOLES.MOBILE, dbo_BENEVOLES.CHAUFFEUR,
dbo_BENEVOLES.INFO, " & _
"dbo_BENEVOLES.PRESS, dbo_BENEVOLES.DECO, dbo_BENEVOLES.STEWARD,
dbo_BENEVOLES.EXOS, " & _
"dbo_BENEVOLES.VIP, dbo_BENEVOLES.TICKET, dbo_BENEVOLES.ART ,
dbo_BENEVOLES.CATERING, " & _
"dbo_BENEVOLES.TRACT, dbo_BENEVOLES.ORGANISATION,
dbo_BENEVOLES.MERCHANDISING, " & _
"dbo_BENEVOLES.ENQUETE, dbo_BENEVOLES.SOUK, dbo_BENEVOLES.WORK2004, " & _
"dbo_BENEVOLES.SECTOR2004, dbo_BENEVOLES.WORK2003, dbo_BENEVOLES.SECTOR2003,
" & _
"dbo_BENEVOLES.WORK2002, dbo_BENEVOLES.SECTOR2002, dbo_BENEVOLES.TEXTE, " &
_
"dbo_BENEVOLES.AGREE, dbo_BENEVOLES.DATETIME, dbo_BENEVOLES.HOSTEIP " & _
"FROM dbo_BENEVOLES;")
End If

DoCmd.SetWarnings True
End Sub

Ou est l'erreur?
D'avance merci

Frédéric

6 réponses

Avatar
Eric
Bonjour fth,

Pas tres clair ...

...

L'objectif est donc d'aller voir sur la table distante, de vérifier si le
record existe deja et si pas, le creer dans la table locale.


S'il existe dans quelle table ? dbo_BENEVOLES ou LocBenev

voici mon code.
EN fait, il ne fait aucune selection, il ajoute toute la table distante.

Private Sub Command2_Click()
'DoCmd.SetWarnings False

'si le record "ID" de la table "dbo_BENEVOLES" n'existe pas dans la table
"LocBenev",
'ajouter le record présent dans "dbo_BENEVOLES" dans la table "LocBenev"



dans l'instruction ci-dessous tu regardes si l'enregistrement
existe dans dbo_BENEVOLES et s'il n'existe pas tu ajoutes à
LocBenev tous les enreg de la table dbo_BENEVOLES. Ca ne doit
pas être ce que tu souhaites.


If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) Then



Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric

Avatar
fth
Bonjour,


c'est cette version ci qui est la bonne! tu as donc bien compris mon
probleme.
mais j'ai un peu de mal avec le code à mettre pour la partie WHERE ...

locbenev est donc bien la table avec laquelle je travaille
dbo_benevole est la table online

il faut regarder régulierement si de nv records existe dans dbo_benevole et
les ajouter à locbenev.

D'avance merci pour le coup de pouce

Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric


Avatar
Eric
re,

alors la fin du select doit-être du genre :
... & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";"

l'ID que tu passes dans le where est l'ID que tu as testé dans le DLookup()
En fait, ca revient à chercher l'absence d'un ID de dbo_BENEVOLES dans
LocBenev, si c'est le cas alors tu ajoutes à LocBenev cet
enregistrement-là. Tu pourrais d'ailleurs boucler sur tous les ID de la
table dbo_BENEVOLES pour mettre à jour en LocBenev.

Si l'ID est un champ Texte alors mettre :
WHERE dbo_BENEVOLES.ID='" & ID & "';"

A+
Eric

Bonjour,



c'est cette version ci qui est la bonne! tu as donc bien compris mon
probleme.
mais j'ai un peu de mal avec le code à mettre pour la partie WHERE ...

locbenev est donc bien la table avec laquelle je travaille
dbo_benevole est la table online

il faut regarder régulierement si de nv records existe dans dbo_benevole et
les ajouter à locbenev.

D'avance merci pour le coup de pouce


Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric







Avatar
fth
Re,

Ce qui me donne un code complet comme ceci:

If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) Then

DoCmd.RunSQL ("INSERT INTO LocBenev ( ID, TITLE, LANG, ACCEPTED, FIRSTNAME,
LASTNAME, BIRTHDAY, NATIONALITY, " & _
"ADDRESS, [NUMBER], ZIP, CITY, COUNTRY, PHONE, PHONE2, FAX, GSM, EMAIL,
EMAIL2, CATEG, " & _
"SECTOR, SSECTOR, SZONE, LEVELRESP, KEYWORDS, EDTION05, COMPANY, OPTIN,
PICTURE, FR1, NL1, UK1, " & _
"ES1, OTHER, OTHER1, BAR, ARTISTE, LOGE, MOBILE, CHAUFFEUR, INFO, PRESS,
DECO, STEWARD, EXOS, " & _
"VIP, TICKET, ART, CATERING, TRACT, ORGANISATION, MERCHANDISING, ENQUETE,
SOUK, WORK2004, " & _
"SECTOR2004, WORK2003, SECTOR2003, WORK2002, SECTOR2002, TEXTE, AGREE,
[DATETIME], HOSTEIP )" & _
"SELECT dbo_BENEVOLES.ID, dbo_BENEVOLES.TITLE, dbo_BENEVOLES.LANG,
dbo_BENEVOLES.ACCEPTED, " & _
"dbo_BENEVOLES.FIRSTNAME , dbo_BENEVOLES.LASTNAME, dbo_BENEVOLES.BIRTHDAY, "
& _
"dbo_BENEVOLES.NATIONALITY, dbo_BENEVOLES.ADDRESS, dbo_BENEVOLES.NUMBER,
dbo_BENEVOLES.ZIP, " & _
"dbo_BENEVOLES.CITY, dbo_BENEVOLES.COUNTRY, dbo_BENEVOLES.PHONE,
dbo_BENEVOLES.PHONE2," & _
"dbo_BENEVOLES.FAX, dbo_BENEVOLES.GSM, dbo_BENEVOLES.EMAIL,
dbo_BENEVOLES.EMAIL2, " & _
"dbo_BENEVOLES.CATEG, dbo_BENEVOLES.SECTOR, dbo_BENEVOLES.SSECTOR,
dbo_BENEVOLES.SZONE, " & _
"dbo_BENEVOLES.LEVELRESP, dbo_BENEVOLES.KEYWORDS, dbo_BENEVOLES.EDTION05, "
& _
"dbo_BENEVOLES.COMPANY, dbo_BENEVOLES.OPTIN, dbo_BENEVOLES.PICTURE, " & _
"dbo_BENEVOLES.FR1, dbo_BENEVOLES.NL1, dbo_BENEVOLES.UK1, dbo_BENEVOLES.ES1,
" & _
"dbo_BENEVOLES.OTHER, dbo_BENEVOLES.OTHER1, dbo_BENEVOLES.BAR,
dbo_BENEVOLES.ARTISTE, " & _
"dbo_BENEVOLES.LOGE, dbo_BENEVOLES.MOBILE, dbo_BENEVOLES.CHAUFFEUR,
dbo_BENEVOLES.INFO, " & _
"dbo_BENEVOLES.PRESS, dbo_BENEVOLES.DECO, dbo_BENEVOLES.STEWARD,
dbo_BENEVOLES.EXOS, " & _
"dbo_BENEVOLES.VIP, dbo_BENEVOLES.TICKET, dbo_BENEVOLES.ART ,
dbo_BENEVOLES.CATERING, " & _
"dbo_BENEVOLES.TRACT, dbo_BENEVOLES.ORGANISATION,
dbo_BENEVOLES.MERCHANDISING, " & _
"dbo_BENEVOLES.ENQUETE, dbo_BENEVOLES.SOUK, dbo_BENEVOLES.WORK2004, " & _
"dbo_BENEVOLES.SECTOR2004, dbo_BENEVOLES.WORK2003, dbo_BENEVOLES.SECTOR2003,
" & _
"dbo_BENEVOLES.WORK2002, dbo_BENEVOLES.SECTOR2002, dbo_BENEVOLES.TEXTE, " &
_
"dbo_BENEVOLES.AGREE, dbo_BENEVOLES.DATETIME, dbo_BENEVOLES.HOSTEIP " & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";")

mais qui me provoque une erreur malgré tout:
"data type mismatch in criteria expression"

ça coince donc qq part ...

encore merci




"Eric" wrote in message
news:%23x$G5%
re,

alors la fin du select doit-être du genre :
... & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";"

l'ID que tu passes dans le where est l'ID que tu as testé dans le
DLookup()
En fait, ca revient à chercher l'absence d'un ID de dbo_BENEVOLES dans
LocBenev, si c'est le cas alors tu ajoutes à LocBenev cet
enregistrement-là. Tu pourrais d'ailleurs boucler sur tous les ID de la
table dbo_BENEVOLES pour mettre à jour en LocBenev.

Si l'ID est un champ Texte alors mettre :
WHERE dbo_BENEVOLES.ID='" & ID & "';"

A+
Eric

Bonjour,



c'est cette version ci qui est la bonne! tu as donc bien compris mon
probleme.
mais j'ai un peu de mal avec le code à mettre pour la partie WHERE ...

locbenev est donc bien la table avec laquelle je travaille
dbo_benevole est la table online

il faut regarder régulierement si de nv records existe dans dbo_benevole
et les ajouter à locbenev.

D'avance merci pour le coup de pouce


Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric








Avatar
Eric
re,

Dans le DLookup tu indiques que ID est de type Texte :
If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) puisque tu
l'entoures de '

donc dans le WHERE du Select fais de même
WHERE dbo_BENEVOLES.ID='" & ID & "';"
et non
WHERE dbo_BENEVOLES.ID=" & ID & ";"

D'autre part, j'ai du mal à comprendre ta recherche. Si l'ID n'existe
pas dans dbo_Benevoles comment veux tu ajouter cet enregistrement dans
la table locale ?

Ne serait-ce pas :

If IsNull(DLookup("ID", "LocBenev", "ID= '" & ID & "'")) Then

Je crois que tu devrais faire une procédure qui lit enregistrement après
enregistrement la table dbo_BENEVOLES. A chaque fois tu regardes si l'ID
lu dans dbo_BENEVOLES existe dans la table locale locBenev, si absence
alors tu ajoutes à la table locale.

A+
Eric


Re,

Ce qui me donne un code complet comme ceci:

If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) Then

DoCmd.RunSQL ("INSERT INTO LocBenev ( ID, TITLE, LANG, ACCEPTED, FIRSTNAME,
LASTNAME, BIRTHDAY, NATIONALITY, " & _
"ADDRESS, [NUMBER], ZIP, CITY, COUNTRY, PHONE, PHONE2, FAX, GSM, EMAIL,
EMAIL2, CATEG, " & _
"SECTOR, SSECTOR, SZONE, LEVELRESP, KEYWORDS, EDTION05, COMPANY, OPTIN,
PICTURE, FR1, NL1, UK1, " & _
"ES1, OTHER, OTHER1, BAR, ARTISTE, LOGE, MOBILE, CHAUFFEUR, INFO, PRESS,
DECO, STEWARD, EXOS, " & _
"VIP, TICKET, ART, CATERING, TRACT, ORGANISATION, MERCHANDISING, ENQUETE,
SOUK, WORK2004, " & _
"SECTOR2004, WORK2003, SECTOR2003, WORK2002, SECTOR2002, TEXTE, AGREE,
[DATETIME], HOSTEIP )" & _
"SELECT dbo_BENEVOLES.ID, dbo_BENEVOLES.TITLE, dbo_BENEVOLES.LANG,
dbo_BENEVOLES.ACCEPTED, " & _
"dbo_BENEVOLES.FIRSTNAME , dbo_BENEVOLES.LASTNAME, dbo_BENEVOLES.BIRTHDAY, "
& _
"dbo_BENEVOLES.NATIONALITY, dbo_BENEVOLES.ADDRESS, dbo_BENEVOLES.NUMBER,
dbo_BENEVOLES.ZIP, " & _
"dbo_BENEVOLES.CITY, dbo_BENEVOLES.COUNTRY, dbo_BENEVOLES.PHONE,
dbo_BENEVOLES.PHONE2," & _
"dbo_BENEVOLES.FAX, dbo_BENEVOLES.GSM, dbo_BENEVOLES.EMAIL,
dbo_BENEVOLES.EMAIL2, " & _
"dbo_BENEVOLES.CATEG, dbo_BENEVOLES.SECTOR, dbo_BENEVOLES.SSECTOR,
dbo_BENEVOLES.SZONE, " & _
"dbo_BENEVOLES.LEVELRESP, dbo_BENEVOLES.KEYWORDS, dbo_BENEVOLES.EDTION05, "
& _
"dbo_BENEVOLES.COMPANY, dbo_BENEVOLES.OPTIN, dbo_BENEVOLES.PICTURE, " & _
"dbo_BENEVOLES.FR1, dbo_BENEVOLES.NL1, dbo_BENEVOLES.UK1, dbo_BENEVOLES.ES1,
" & _
"dbo_BENEVOLES.OTHER, dbo_BENEVOLES.OTHER1, dbo_BENEVOLES.BAR,
dbo_BENEVOLES.ARTISTE, " & _
"dbo_BENEVOLES.LOGE, dbo_BENEVOLES.MOBILE, dbo_BENEVOLES.CHAUFFEUR,
dbo_BENEVOLES.INFO, " & _
"dbo_BENEVOLES.PRESS, dbo_BENEVOLES.DECO, dbo_BENEVOLES.STEWARD,
dbo_BENEVOLES.EXOS, " & _
"dbo_BENEVOLES.VIP, dbo_BENEVOLES.TICKET, dbo_BENEVOLES.ART ,
dbo_BENEVOLES.CATERING, " & _
"dbo_BENEVOLES.TRACT, dbo_BENEVOLES.ORGANISATION,
dbo_BENEVOLES.MERCHANDISING, " & _
"dbo_BENEVOLES.ENQUETE, dbo_BENEVOLES.SOUK, dbo_BENEVOLES.WORK2004, " & _
"dbo_BENEVOLES.SECTOR2004, dbo_BENEVOLES.WORK2003, dbo_BENEVOLES.SECTOR2003,
" & _
"dbo_BENEVOLES.WORK2002, dbo_BENEVOLES.SECTOR2002, dbo_BENEVOLES.TEXTE, " &
_
"dbo_BENEVOLES.AGREE, dbo_BENEVOLES.DATETIME, dbo_BENEVOLES.HOSTEIP " & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";")

mais qui me provoque une erreur malgré tout:
"data type mismatch in criteria expression"

ça coince donc qq part ...

encore merci




"Eric" wrote in message
news:%23x$G5%

re,

alors la fin du select doit-être du genre :
... & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";"

l'ID que tu passes dans le where est l'ID que tu as testé dans le
DLookup()
En fait, ca revient à chercher l'absence d'un ID de dbo_BENEVOLES dans
LocBenev, si c'est le cas alors tu ajoutes à LocBenev cet
enregistrement-là. Tu pourrais d'ailleurs boucler sur tous les ID de la
table dbo_BENEVOLES pour mettre à jour en LocBenev.

Si l'ID est un champ Texte alors mettre :
WHERE dbo_BENEVOLES.ID='" & ID & "';"

A+
Eric


Bonjour,



c'est cette version ci qui est la bonne! tu as donc bien compris mon
probleme.
mais j'ai un peu de mal avec le code à mettre pour la partie WHERE ...

locbenev est donc bien la table avec laquelle je travaille
dbo_benevole est la table online

il faut regarder régulierement si de nv records existe dans dbo_benevole
et les ajouter à locbenev.

D'avance merci pour le coup de pouce



Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric











Avatar
fth
heuu, oui, c'est ça en fait.

la table dbo_benevole est la table online et la table locbenev est la table
locale.
la vérification à faire est effectivement de voir s'il y a de nouveau
enregistrements dans la dbo_benevole et de les ajouter dans locbenev.

ok je teste et te dis quoi,
bonne soirée et merci

Frédéric


"Eric" wrote in message
news:
re,

Dans le DLookup tu indiques que ID est de type Texte :
If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) puisque tu
l'entoures de '

donc dans le WHERE du Select fais de même
WHERE dbo_BENEVOLES.ID='" & ID & "';"
et non
WHERE dbo_BENEVOLES.ID=" & ID & ";"

D'autre part, j'ai du mal à comprendre ta recherche. Si l'ID n'existe pas
dans dbo_Benevoles comment veux tu ajouter cet enregistrement dans la
table locale ?

Ne serait-ce pas :

If IsNull(DLookup("ID", "LocBenev", "ID= '" & ID & "'")) Then

Je crois que tu devrais faire une procédure qui lit enregistrement après
enregistrement la table dbo_BENEVOLES. A chaque fois tu regardes si l'ID
lu dans dbo_BENEVOLES existe dans la table locale locBenev, si absence
alors tu ajoutes à la table locale.

A+
Eric


Re,

Ce qui me donne un code complet comme ceci:

If IsNull(DLookup("ID", "dbo_BENEVOLES", "ID= '" & ID & "'")) Then

DoCmd.RunSQL ("INSERT INTO LocBenev ( ID, TITLE, LANG, ACCEPTED,
FIRSTNAME, LASTNAME, BIRTHDAY, NATIONALITY, " & _
"ADDRESS, [NUMBER], ZIP, CITY, COUNTRY, PHONE, PHONE2, FAX, GSM, EMAIL,
EMAIL2, CATEG, " & _
"SECTOR, SSECTOR, SZONE, LEVELRESP, KEYWORDS, EDTION05, COMPANY, OPTIN,
PICTURE, FR1, NL1, UK1, " & _
"ES1, OTHER, OTHER1, BAR, ARTISTE, LOGE, MOBILE, CHAUFFEUR, INFO, PRESS,
DECO, STEWARD, EXOS, " & _
"VIP, TICKET, ART, CATERING, TRACT, ORGANISATION, MERCHANDISING,
ENQUETE, SOUK, WORK2004, " & _
"SECTOR2004, WORK2003, SECTOR2003, WORK2002, SECTOR2002, TEXTE, AGREE,
[DATETIME], HOSTEIP )" & _
"SELECT dbo_BENEVOLES.ID, dbo_BENEVOLES.TITLE, dbo_BENEVOLES.LANG,
dbo_BENEVOLES.ACCEPTED, " & _
"dbo_BENEVOLES.FIRSTNAME , dbo_BENEVOLES.LASTNAME,
dbo_BENEVOLES.BIRTHDAY, " & _
"dbo_BENEVOLES.NATIONALITY, dbo_BENEVOLES.ADDRESS, dbo_BENEVOLES.NUMBER,
dbo_BENEVOLES.ZIP, " & _
"dbo_BENEVOLES.CITY, dbo_BENEVOLES.COUNTRY, dbo_BENEVOLES.PHONE,
dbo_BENEVOLES.PHONE2," & _
"dbo_BENEVOLES.FAX, dbo_BENEVOLES.GSM, dbo_BENEVOLES.EMAIL,
dbo_BENEVOLES.EMAIL2, " & _
"dbo_BENEVOLES.CATEG, dbo_BENEVOLES.SECTOR, dbo_BENEVOLES.SSECTOR,
dbo_BENEVOLES.SZONE, " & _
"dbo_BENEVOLES.LEVELRESP, dbo_BENEVOLES.KEYWORDS, dbo_BENEVOLES.EDTION05,
" & _
"dbo_BENEVOLES.COMPANY, dbo_BENEVOLES.OPTIN, dbo_BENEVOLES.PICTURE, " & _
"dbo_BENEVOLES.FR1, dbo_BENEVOLES.NL1, dbo_BENEVOLES.UK1,
dbo_BENEVOLES.ES1, " & _
"dbo_BENEVOLES.OTHER, dbo_BENEVOLES.OTHER1, dbo_BENEVOLES.BAR,
dbo_BENEVOLES.ARTISTE, " & _
"dbo_BENEVOLES.LOGE, dbo_BENEVOLES.MOBILE, dbo_BENEVOLES.CHAUFFEUR,
dbo_BENEVOLES.INFO, " & _
"dbo_BENEVOLES.PRESS, dbo_BENEVOLES.DECO, dbo_BENEVOLES.STEWARD,
dbo_BENEVOLES.EXOS, " & _
"dbo_BENEVOLES.VIP, dbo_BENEVOLES.TICKET, dbo_BENEVOLES.ART ,
dbo_BENEVOLES.CATERING, " & _
"dbo_BENEVOLES.TRACT, dbo_BENEVOLES.ORGANISATION,
dbo_BENEVOLES.MERCHANDISING, " & _
"dbo_BENEVOLES.ENQUETE, dbo_BENEVOLES.SOUK, dbo_BENEVOLES.WORK2004, " & _
"dbo_BENEVOLES.SECTOR2004, dbo_BENEVOLES.WORK2003,
dbo_BENEVOLES.SECTOR2003, " & _
"dbo_BENEVOLES.WORK2002, dbo_BENEVOLES.SECTOR2002, dbo_BENEVOLES.TEXTE, "
& _
"dbo_BENEVOLES.AGREE, dbo_BENEVOLES.DATETIME, dbo_BENEVOLES.HOSTEIP " & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";")

mais qui me provoque une erreur malgré tout:
"data type mismatch in criteria expression"

ça coince donc qq part ...

encore merci




"Eric" wrote in message
news:%23x$G5%

re,

alors la fin du select doit-être du genre :
... & _
"FROM dbo_BENEVOLES WHERE dbo_BENEVOLES.ID=" & ID & ";"

l'ID que tu passes dans le where est l'ID que tu as testé dans le
DLookup()
En fait, ca revient à chercher l'absence d'un ID de dbo_BENEVOLES dans
LocBenev, si c'est le cas alors tu ajoutes à LocBenev cet
enregistrement-là. Tu pourrais d'ailleurs boucler sur tous les ID de la
table dbo_BENEVOLES pour mettre à jour en LocBenev.

Si l'ID est un champ Texte alors mettre :
WHERE dbo_BENEVOLES.ID='" & ID & "';"

A+
Eric


Bonjour,



c'est cette version ci qui est la bonne! tu as donc bien compris mon
probleme.
mais j'ai un peu de mal avec le code à mettre pour la partie WHERE ...

locbenev est donc bien la table avec laquelle je travaille
dbo_benevole est la table online

il faut regarder régulierement si de nv records existe dans dbo_benevole
et les ajouter à locbenev.

D'avance merci pour le coup de pouce



Si j'ai bien compris, tu veux regarder si l'enregistrement
relatif à l'ID présent dans dbo_BENEVOLES est absent dans
LocBenev. Si c'est le cas, alors tu veux ajouter cet enreg
à LocBenev.
Dans ce cas, il faut qu'à la fin de ton select
tu mettes une clause WHERE portant sur l'ID après le FROM
dbo_BENEVOLES mais tu dois aussi changer la table dans le
DLookUp, remplacer dbo_BENEVOLES par LocBenev

Question subsidiaire : Qui fournit la valeur de l'ID que tu
passes en argument au DLookup?

N'étant pas sur d'avoir bien compris ce que tu veux faire, je
te garantis pas du résultat.

A+
Eric