|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Je veux corriger des choses sur une base mais j'ai un message d'erreur me disant que deja un utilisateur modifie les memes données que moi ??? quand j'arrive sur rst.update Mon code sur une base access est OK Je fais les modifs sur une base sql server Sub Tel() Dim db As DAO.Database Dim rst As DAO.Recordset Dim fld As DAO.Field Dim Update As String Update = "clients" Set db = CurrentDb() Set rst = db.OpenRecordset(Update, dbOpenDynaset, dbSeeChanges) While rst.EOF = False If IsNull(rst("tel")) Then GoTo Drop End If rst.Edit rst("tel") = Replace(rst("tel"), ".", "") rst("tel") = Replace(rst("tel"), " ", "") rst("tel") = Replace(rst("tel"), "-", "") rst("tel") = Replace(rst("tel"), "/", "") rst.Update Drop: rst.MoveNext Wend rst.Close Set rst = Nothing Set db = Nothing End Sub quelqu'un a une idée ? Merci |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
vu le code, aucune.
à part le dbOpenDynaset qui n'a pas un sens tres "clair"... une c... de configuration du CurrentDb, un side effect avec un autre recordset pas fermé, je sais pas moi... pitié pour ceux qui bossent avec vous, ecrivez du C#, et arretez les goto ![]() "Hawk" <nospam@orange.fr> a écrit dans le message de news: 99itk313ufkv858kmu1cdn78ng583akcu8@4ax.com... > Bonjour, > > Je veux corriger des choses sur une base mais j'ai un message d'erreur > me disant que deja un utilisateur modifie les memes données que moi > ??? quand j'arrive sur rst.update > Mon code sur une base access est OK > > Je fais les modifs sur une base sql server > > Sub Tel() > Dim db As DAO.Database > Dim rst As DAO.Recordset > Dim fld As DAO.Field > Dim Update As String > > Update = "clients" > > Set db = CurrentDb() > > Set rst = db.OpenRecordset(Update, dbOpenDynaset, > dbSeeChanges) > While rst.EOF = False > If IsNull(rst("tel")) Then > GoTo Drop > End If > rst.Edit > rst("tel") = Replace(rst("tel"), ".", "") > rst("tel") = Replace(rst("tel"), " ", "") > rst("tel") = Replace(rst("tel"), "-", "") > rst("tel") = Replace(rst("tel"), "/", "") > rst.Update > Drop: > rst.MoveNext > Wend > rst.Close > Set rst = Nothing > Set db = Nothing > End Sub > > quelqu'un a une idée ? > > Merci |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le message d'erreur exact est celui-la :
le moteur de base de données microsoft jet a arreté le traitement parce que vous et un autre utilisateur tentez de modifier les mêmes données en même temps. J'ai exporter la base de données en question sur un autre serveur SQL Le meme code fonctionne ! Quelqu'un a une idée ? Merci On Thu, 29 Nov 2007 19:58:25 +0100, "Ambassadeur kosh" <kosh.naranek@babylon5.net> wrote: >vu le code, aucune. >à part le dbOpenDynaset qui n'a pas un sens tres "clair"... >une c... de configuration du CurrentDb, un side effect avec un autre >recordset pas fermé, je sais pas moi... >pitié pour ceux qui bossent avec vous, ecrivez du C#, et arretez les goto ![]() > > > >"Hawk" <nospam@orange.fr> a écrit dans le message de news: >99itk313ufkv858kmu1cdn78ng583akcu8@4ax.com... >> Bonjour, >> >> Je veux corriger des choses sur une base mais j'ai un message d'erreur >> me disant que deja un utilisateur modifie les memes données que moi >> ??? quand j'arrive sur rst.update >> Mon code sur une base access est OK >> >> Je fais les modifs sur une base sql server >> >> Sub Tel() >> Dim db As DAO.Database >> Dim rst As DAO.Recordset >> Dim fld As DAO.Field >> Dim Update As String >> >> Update = "clients" >> >> Set db = CurrentDb() >> >> Set rst = db.OpenRecordset(Update, dbOpenDynaset, >> dbSeeChanges) >> While rst.EOF = False >> If IsNull(rst("tel")) Then >> GoTo Drop >> End If >> rst.Edit >> rst("tel") = Replace(rst("tel"), ".", "") >> rst("tel") = Replace(rst("tel"), " ", "") >> rst("tel") = Replace(rst("tel"), "-", "") >> rst("tel") = Replace(rst("tel"), "/", "") >> rst.Update >> Drop: >> rst.MoveNext >> Wend >> rst.Close >> Set rst = Nothing >> Set db = Nothing >> End Sub >> >> quelqu'un a une idée ? >> >> Merci > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Pourquoi ne pas le faire tout bêtement avec des commandes ensemblistes en T-SQL ? UPDATE clients SET tel = REPLACE(tel, '.', '') UPDATE clients SET tel = REPLACE(tel, ' ', '') UPDATE clients SET tel = REPLACE(tel, '-', '') UPDATE clients SET tel = REPLACE(tel, '/', '') Cordialement _______________________________ Philippe TROTIN Microsoft Services France _______________________________ "Hawk" <nospam@orange.fr> a écrit dans le message de groupe de discussion : a2quk3h18s6kluml4u4g88842mqfvqdt1q@4ax.com... > Le message d'erreur exact est celui-la : > > le moteur de base de données microsoft jet a arreté > le traitement parce que vous et un autre utilisateur > tentez de modifier les mêmes données en même temps. > > J'ai exporter la base de données en question sur un autre serveur SQL > Le meme code fonctionne ! > Quelqu'un a une idée ? > > Merci > > On Thu, 29 Nov 2007 19:58:25 +0100, "Ambassadeur kosh" > <kosh.naranek@babylon5.net> wrote: > >>vu le code, aucune. >>à part le dbOpenDynaset qui n'a pas un sens tres "clair"... >>une c... de configuration du CurrentDb, un side effect avec un autre >>recordset pas fermé, je sais pas moi... >>pitié pour ceux qui bossent avec vous, ecrivez du C#, et arretez les goto >> ![]() >> >> >> >>"Hawk" <nospam@orange.fr> a écrit dans le message de news: >>99itk313ufkv858kmu1cdn78ng583akcu8@4ax.com... >>> Bonjour, >>> >>> Je veux corriger des choses sur une base mais j'ai un message d'erreur >>> me disant que deja un utilisateur modifie les memes données que moi >>> ??? quand j'arrive sur rst.update >>> Mon code sur une base access est OK >>> >>> Je fais les modifs sur une base sql server >>> >>> Sub Tel() >>> Dim db As DAO.Database >>> Dim rst As DAO.Recordset >>> Dim fld As DAO.Field >>> Dim Update As String >>> >>> Update = "clients" >>> >>> Set db = CurrentDb() >>> >>> Set rst = db.OpenRecordset(Update, dbOpenDynaset, >>> dbSeeChanges) >>> While rst.EOF = False >>> If IsNull(rst("tel")) Then >>> GoTo Drop >>> End If >>> rst.Edit >>> rst("tel") = Replace(rst("tel"), ".", "") >>> rst("tel") = Replace(rst("tel"), " ", "") >>> rst("tel") = Replace(rst("tel"), "-", "") >>> rst("tel") = Replace(rst("tel"), "/", "") >>> rst.Update >>> Drop: >>> rst.MoveNext >>> Wend >>> rst.Close >>> Set rst = Nothing >>> Set db = Nothing >>> End Sub >>> >>> quelqu'un a une idée ? >>> >>> Merci >> |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On 30 nov, 14:43, "Philippe TROTIN [MS]"
<ptro...@online.microsoft.com> wrote: > Bonjour, > > Pourquoi ne pas le faire tout bêtement avec des commandes ensemblistes en > T-SQL ? > > UPDATE clients SET tel = REPLACE(tel, '.', '') > UPDATE clients SET tel = REPLACE(tel, ' ', '') > UPDATE clients SET tel = REPLACE(tel, '-', '') > UPDATE clients SET tel = REPLACE(tel, '/', '') > Ceci supposerait que notre internaute connaisse SQL ! SI je voulais faire du mauvais esprit, je dirais que déjà faire du VB est une hérésie... Rapellons en effet que le B de BASIC signifie : Beginner All Purpose Symbolic Code, c'est à dire selon moi Langage à tout mal faire pour débutant ignare !!! ;-) Mais je crois que je vais encore m'attirer des foudres... Espérons simpelment que ces foudres seront remplis de champagne ! A + |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
De cette façon ca risque d'être long pour une base de près de 10000
lignes ! Et puis, selon si c'est un tel de mobile, il faut que je le mettre dans un autre champs. Le SQL ne propose pas bcp de condition, à la limite, ce serait sans doute possible en transact SQL On Fri, 30 Nov 2007 14:43:51 +0100, "Philippe TROTIN [MS]" <ptrotin@online.microsoft.com> wrote: >Bonjour, > >Pourquoi ne pas le faire tout bêtement avec des commandes ensemblistes en >T-SQL ? > >UPDATE clients SET tel = REPLACE(tel, '.', '') >UPDATE clients SET tel = REPLACE(tel, ' ', '') >UPDATE clients SET tel = REPLACE(tel, '-', '') >UPDATE clients SET tel = REPLACE(tel, '/', '') > > >Cordialement >_______________________________ > > Philippe TROTIN > Microsoft Services France >_______________________________ > >"Hawk" <nospam@orange.fr> a écrit dans le message de groupe de discussion : >a2quk3h18s6kluml4u4g88842mqfvqdt1q@4ax.com... >> Le message d'erreur exact est celui-la : >> >> le moteur de base de données microsoft jet a arreté >> le traitement parce que vous et un autre utilisateur >> tentez de modifier les mêmes données en même temps. >> >> J'ai exporter la base de données en question sur un autre serveur SQL >> Le meme code fonctionne ! >> Quelqu'un a une idée ? >> >> Merci >> >> On Thu, 29 Nov 2007 19:58:25 +0100, "Ambassadeur kosh" >> <kosh.naranek@babylon5.net> wrote: >> >>>vu le code, aucune. >>>à part le dbOpenDynaset qui n'a pas un sens tres "clair"... >>>une c... de configuration du CurrentDb, un side effect avec un autre >>>recordset pas fermé, je sais pas moi... >>>pitié pour ceux qui bossent avec vous, ecrivez du C#, et arretez les goto >>> ![]() >>> >>> >>> >>>"Hawk" <nospam@orange.fr> a écrit dans le message de news: >>>99itk313ufkv858kmu1cdn78ng583akcu8@4ax.com... >>>> Bonjour, >>>> >>>> Je veux corriger des choses sur une base mais j'ai un message d'erreur >>>> me disant que deja un utilisateur modifie les memes données que moi >>>> ??? quand j'arrive sur rst.update >>>> Mon code sur une base access est OK >>>> >>>> Je fais les modifs sur une base sql server >>>> >>>> Sub Tel() >>>> Dim db As DAO.Database >>>> Dim rst As DAO.Recordset >>>> Dim fld As DAO.Field >>>> Dim Update As String >>>> >>>> Update = "clients" >>>> >>>> Set db = CurrentDb() >>>> >>>> Set rst = db.OpenRecordset(Update, dbOpenDynaset, >>>> dbSeeChanges) >>>> While rst.EOF = False >>>> If IsNull(rst("tel")) Then >>>> GoTo Drop >>>> End If >>>> rst.Edit >>>> rst("tel") = Replace(rst("tel"), ".", "") >>>> rst("tel") = Replace(rst("tel"), " ", "") >>>> rst("tel") = Replace(rst("tel"), "-", "") >>>> rst("tel") = Replace(rst("tel"), "/", "") >>>> rst.Update >>>> Drop: >>>> rst.MoveNext >>>> Wend >>>> rst.Close >>>> Set rst = Nothing >>>> Set db = Nothing >>>> End Sub >>>> >>>> quelqu'un a une idée ? >>>> >>>> Merci >>> |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Classiquement un problème de verrouillage optimiste. Le where teste les
valeurs originales pour voir si la ligne à changer entretemps et détecte parfois à tord un tel changement (par exemple sur des dates qui serait précises à la ms près dans SQL Server ce que la précision des valeurs originales stockées par DAO). Un petit coup de profiler permettrrait de voir ce qu'il en est exactement... -- Patrice "Hawk" <nospam@orange.fr> a écrit dans le message de news: a2quk3h18s6kluml4u4g88842mqfvqdt1q@4ax.com... > Le message d'erreur exact est celui-la : > > le moteur de base de données microsoft jet a arreté > le traitement parce que vous et un autre utilisateur > tentez de modifier les mêmes données en même temps. > > J'ai exporter la base de données en question sur un autre serveur SQL > Le meme code fonctionne ! > Quelqu'un a une idée ? > > Merci > > On Thu, 29 Nov 2007 19:58:25 +0100, "Ambassadeur kosh" > <kosh.naranek@babylon5.net> wrote: > >>vu le code, aucune. >>à part le dbOpenDynaset qui n'a pas un sens tres "clair"... >>une c... de configuration du CurrentDb, un side effect avec un autre >>recordset pas fermé, je sais pas moi... >>pitié pour ceux qui bossent avec vous, ecrivez du C#, et arretez les goto >> ![]() >> >> >> >>"Hawk" <nospam@orange.fr> a écrit dans le message de news: >>99itk313ufkv858kmu1cdn78ng583akcu8@4ax.com... >>> Bonjour, >>> >>> Je veux corriger des choses sur une base mais j'ai un message d'erreur >>> me disant que deja un utilisateur modifie les memes données que moi >>> ??? quand j'arrive sur rst.update >>> Mon code sur une base access est OK >>> >>> Je fais les modifs sur une base sql server >>> >>> Sub Tel() >>> Dim db As DAO.Database >>> Dim rst As DAO.Recordset >>> Dim fld As DAO.Field >>> Dim Update As String >>> >>> Update = "clients" >>> >>> Set db = CurrentDb() >>> >>> Set rst = db.OpenRecordset(Update, dbOpenDynaset, >>> dbSeeChanges) >>> While rst.EOF = False >>> If IsNull(rst("tel")) Then >>> GoTo Drop >>> End If >>> rst.Edit >>> rst("tel") = Replace(rst("tel"), ".", "") >>> rst("tel") = Replace(rst("tel"), " ", "") >>> rst("tel") = Replace(rst("tel"), "-", "") >>> rst("tel") = Replace(rst("tel"), "/", "") >>> rst.Update >>> Drop: >>> rst.MoveNext >>> Wend >>> rst.Close >>> Set rst = Nothing >>> Set db = Nothing >>> End Sub >>> >>> quelqu'un a une idée ? >>> >>> Merci >> |
|
![]() |
| Outils de la discussion | |
|
|