PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > Correction base
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Correction base

Réponse
 
LinkBack Outils de la discussion
Vieux 29/11/2007, 14h16   #1
Hawk
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Correction base

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
  Réponse avec citation
Vieux 29/11/2007, 18h58   #2
Ambassadeur kosh
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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



  Réponse avec citation
Vieux 30/11/2007, 01h34   #3
Hawk
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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

>

  Réponse avec citation
Vieux 30/11/2007, 13h43   #4
Philippe TROTIN [MS]
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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

>>

  Réponse avec citation
Vieux 30/11/2007, 17h51   #5
SQLpro
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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 +
  Réponse avec citation
Vieux 07/12/2007, 12h01   #6
Hawk
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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

  Réponse avec citation
Vieux 10/12/2007, 17h41   #7
Patrice
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Correction base

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

>>



  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 21h21.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,18094 seconds with 15 queries