OVH Cloud OVH Cloud

Update un seul enregistrement!!!

5 réponses
Avatar
Ben
Bonjour,

Bref description de mon problème :)
Je doit travailler avec une base de données MS-Access surlaquel je ne peut
rien changer (Structure)
et je doit trouver une solution pour changer qu'un seul enregistrement dans
une table qui peut contenir plusieur enregistrements identique!

Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans MS-Access
2000
---------------------------------------------------------------------------
update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1
--------------------------------------------------------------------------

Merci pour votre aide

5 réponses

Avatar
Buddy
Bonjour,
Salut


Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans MS-Access
2000
---------------------------------------------------------------------------
update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1
--------------------------------------------------------------------------
Voilà l'équivalent :


UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable ORDER BY xChamp DESC)));

Je pense ne pas m'être gouré


Merci pour votre aide
De rien


--
Ouala
Bye
Buddy

Avatar
Ben
Salut Buddy,

Merci pour votre aide, mais malheuresement la requette modifie aussi tous
les enregistrements (J'ai ajouter Where dans la sous-requette),

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable WHERE xChamp='ancX' AND
yChamp='ancY' ORDER BY xChamp DESC)));


Malheureusement dans mon cas il y a certain enregistrements qui contiennent
exactement les mêmes données.
donc il n y a aucun champs qui va nous permettre d'identifier
l'enregistrement à modifier, et il faut modifier qu'un seul

J'ai pensé (puisque LIMIT 1) n'existe pas dans Access, si je peux aller avec
numéro de ligne (comme ROWNUM) de l'enregistrement ou un Fetch
mais sans succès.

Merci,

"Buddy" wrote in message
news:
Bonjour,
Salut


Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans
MS-Access


2000


--------------------------------------------------------------------------
-

update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1


--------------------------------------------------------------------------
Voilà l'équivalent :

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable ORDER BY xChamp DESC)));

Je pense ne pas m'être gouré


Merci pour votre aide
De rien


--
Ouala
Bye
Buddy





Avatar
Buddy
Salut Buddy,

Merci pour votre aide, mais malheuresement la requette modifie aussi tous
les enregistrements (J'ai ajouter Where dans la sous-requette),

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable WHERE xChamp='ancX' AND
yChamp='ancY' ORDER BY xChamp DESC)));


Malheureusement dans mon cas il y a certain enregistrements qui contiennent
exactement les mêmes données.
donc il n y a aucun champs qui va nous permettre d'identifier
l'enregistrement à modifier, et il faut modifier qu'un seul


Bon le plus simple c'est de faire simple (c'est beau hein !)
On extrait un id de la table avec les criteres et puis on modifie cet enregistrement

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE xId IN (SELECT TOP 1 xId FROM xTable WHERE xChamp='ancX' AND yChamp='ancY' ORDER BY xChamp
DESC);

Essaies moi ça

Buddy




J'ai pensé (puisque LIMIT 1) n'existe pas dans Access, si je peux aller avec
numéro de ligne (comme ROWNUM) de l'enregistrement ou un Fetch
mais sans succès.

Merci,

"Buddy" wrote in message
news:
Bonjour,
Salut


Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans MS-Access
2000


-------------------------------------------------------------------------- -
update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1


--------------------------------------------------------------------------
Voilà l'équivalent :

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable ORDER BY xChamp DESC)));

Je pense ne pas m'être gouré


Merci pour votre aide
De rien


--
Ouala
Bye
Buddy




--
Ouala
Bye
Buddy



Avatar
Ben
Salut Buddy,

Oui je comprend, c'est ce qu'on peut faire normalement dans une BD, mais la
mienne sort de l'ordinaire.

Il faut dire que la base de données sur laquelle je travail ressemble plus à
un chifrier Excel que à une BD, elle ne respecte aucune des régles
fondamentale d'une base de données (Pas de clé, pas de relation, rien) +
Duplication des données.
Je ne peux pas prendre un ID qui peut determiner l'enregistrement à modier,
ni créer un
(Je ne peux rien changer de la strucure de la table)

----------------------------------------------------------------------------
--------------
Pour mieux comprendre ma situation voila un exemple de la table
----------------------------------------------------------------------------
---------------
ID | Date | description | montant
--------------------------------------------------
23 | 06-01-23 | ABC | 32.99
--------------------------------------------------
23 | 06-01-24 | xyz | 24.99 <= Enregistrement à modifier
--------------------------------------------------
23 | 06-01-24 | xyz | 24.99
--------------------------------------------------
30 | 06-01-26 | WWC | 24.99
----------------------------------------------------------------------------
-----------------

Je m'excuse si je demande tros,

Merci,


"Buddy" wrote in message
news:
Salut Buddy,

Merci pour votre aide, mais malheuresement la requette modifie aussi
tous


les enregistrements (J'ai ajouter Where dans la sous-requette),

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable WHERE xChamp='ancX' AND
yChamp='ancY' ORDER BY xChamp DESC)));


Malheureusement dans mon cas il y a certain enregistrements qui
contiennent


exactement les mêmes données.
donc il n y a aucun champs qui va nous permettre d'identifier
l'enregistrement à modifier, et il faut modifier qu'un seul


Bon le plus simple c'est de faire simple (c'est beau hein !)
On extrait un id de la table avec les criteres et puis on modifie cet
enregistrement


UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE xId IN (SELECT TOP 1 xId FROM xTable WHERE xChamp='ancX' AND
yChamp='ancY' ORDER BY xChamp

DESC);

Essaies moi ça

Buddy




J'ai pensé (puisque LIMIT 1) n'existe pas dans Access, si je peux aller
avec


numéro de ligne (comme ROWNUM) de l'enregistrement ou un Fetch
mais sans succès.

Merci,

"Buddy" wrote in message
news:
Bonjour,
Salut


Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans
MS-Access




2000




-------------------------------------------------------------------------
- -


update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1




-------------------------------------------------------------------------
-


Voilà l'équivalent :

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable ORDER BY xChamp DESC)));

Je pense ne pas m'être gouré


Merci pour votre aide
De rien


--
Ouala
Bye
Buddy




--
Ouala
Bye
Buddy







Avatar
Buddy
Salut

Bon dans ton cas faut soritr l'artillerie lourde.
Crée une base vide
Lie ta table pourrie dans cette base vide
Copie colle ta table en rajoutant un champ Id (NumAuto)
Exécute la requête donnée précédemment sur ta table avec l'Id
Purge ta table liée
Réinjecte tes données dans ta table liée à partir de ta table avec l'Id

Et après tout ça, tu pourras aller boire un coup.

Ouala
Bye
Buddy



Salut Buddy,

Oui je comprend, c'est ce qu'on peut faire normalement dans une BD, mais la
mienne sort de l'ordinaire.

Il faut dire que la base de données sur laquelle je travail ressemble plus à
un chifrier Excel que à une BD, elle ne respecte aucune des régles
fondamentale d'une base de données (Pas de clé, pas de relation, rien) +
Duplication des données.
Je ne peux pas prendre un ID qui peut determiner l'enregistrement à modier,
ni créer un
(Je ne peux rien changer de la strucure de la table)

----------------------------------------------------------------------------
--------------
Pour mieux comprendre ma situation voila un exemple de la table
----------------------------------------------------------------------------
---------------
ID | Date | description | montant
--------------------------------------------------
23 | 06-01-23 | ABC | 32.99
--------------------------------------------------
23 | 06-01-24 | xyz | 24.99 <= > Enregistrement à modifier
--------------------------------------------------
23 | 06-01-24 | xyz | 24.99
--------------------------------------------------
30 | 06-01-26 | WWC | 24.99
----------------------------------------------------------------------------
-----------------

Je m'excuse si je demande tros,

Merci,


"Buddy" wrote in message
news:
Salut Buddy,

Merci pour votre aide, mais malheuresement la requette modifie aussi tous
les enregistrements (J'ai ajouter Where dans la sous-requette),

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable WHERE xChamp='ancX' AND
yChamp='ancY' ORDER BY xChamp DESC)));


Malheureusement dans mon cas il y a certain enregistrements qui contiennent
exactement les mêmes données.
donc il n y a aucun champs qui va nous permettre d'identifier
l'enregistrement à modifier, et il faut modifier qu'un seul


Bon le plus simple c'est de faire simple (c'est beau hein !)
On extrait un id de la table avec les criteres et puis on modifie cet enregistrement

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE xId IN (SELECT TOP 1 xId FROM xTable WHERE xChamp='ancX' AND yChamp='ancY' ORDER BY xChamp
DESC);

Essaies moi ça

Buddy




J'ai pensé (puisque LIMIT 1) n'existe pas dans Access, si je peux aller avec
numéro de ligne (comme ROWNUM) de l'enregistrement ou un Fetch
mais sans succès.

Merci,

"Buddy" wrote in message
news:
Bonjour,
Salut


Ce que je cherche c l'équivalent à cette requette SQL (mySQL) dans MS-Access
2000




------------------------------------------------------------------------- - -
update xTable set xChamp = 'xValeur', yChamp = 'yValeur'
where xChamp = 'ancienXValeur', yChamp = 'ancienYValeur'
order by xChamp desc limit 1




------------------------------------------------------------------------- -
Voilà l'équivalent :

UPDATE xTable SET xChamp='xValeur', yChamp='yValeur'
WHERE (xChamp='ancX' AND yChamp='ancY'
AND (xChamp=(SELECT TOP 1 xChamp FROM xTable ORDER BY xChamp DESC)));

Je pense ne pas m'être gouré


Merci pour votre aide
De rien


--
Ouala
Bye
Buddy




--
Ouala
Bye
Buddy