Correction base

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Ambassadeur kosh
Le #11865531
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"
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


Hawk
Le #11865521
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"

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"
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





Philippe TROTIN [MS]
Le #11865511
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"
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"

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"
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







SQLpro
Le #11865461
On 30 nov, 14:43, "Philippe TROTIN [MS]"
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 +
Hawk
Le #11864981
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]"

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"
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"

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"
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









Patrice
Le #11864871
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"
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"

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"
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







Publicité
Poster une réponse
Anonyme