Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Correction base

6 réponses
Avatar
Hawk
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

6 réponses

Avatar
Ambassadeur kosh
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" a écrit dans le message de news:

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


Avatar
Hawk
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"
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" a écrit dans le message de news:

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





Avatar
Philippe TROTIN [MS]
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" a écrit dans le message de groupe de discussion :

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"
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" a écrit dans le message de news:

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







Avatar
SQLpro
On 30 nov, 14:43, "Philippe TROTIN [MS]"
wrote:
Bonjour,

Pourquoi ne pas le faire tout bêtement avec des commandes ensemblistes e n
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 +
Avatar
Hawk
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]"
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" a écrit dans le message de groupe de discussion :

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"
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" a écrit dans le message de news:

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









Avatar
Patrice
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" a écrit dans le message de news:

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"
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" a écrit dans le message de news:

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