IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[déplacé]Update et Position


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut [déplacé]Update et Position
    Bonjour,

    Je me bats depuis 2 jours avec un problème que je n'arrive pas à résoudre.
    J'ai un Recordset des plus bête qui soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT P.*
    FROM  T_Planned
    (pour essayer de comprendre j'ai viré toutes les autre clauses - JOIN, WHERE et ORDER)
    Ce Recordset n'est pas trié, n'a pas de filtre et ne sert pas d'affichage dans un DataGrid.

    Si je tente de modifier n'importe laquelle de ces colonnes, celle-ci est modifiée AVEC ou SANS .Update (bien sur j'ai vérifié après avoir relancé l'appli et AVEC le SQL Manager.

    Par contre si je mets un Update, j'obtiens une erreur "La ligne ne peut être trouvé, etc...". J'ai bien sur essayé SANS Update mais le Recordset reste en
    EditMode = EditInProgress empêchant toute action ultérieure dessus (logique).

    Cela m'amène 2 questions:
    - Je croyais (à tort ?) qu'il fallait faire un Update pour réellement mettre à jour le Recordset, mais apparemment peut-être pas ?
    - Quelqu'un aurait-il une piste pour essayer de sortir de ce bug ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    En ce qui me concerne, je n'ai rien compris à la question. Je pense qu'elle souffre d'un syndrome d'imprécision chronique, maladie grave mais très répandue dans ces forums. Si vous voulez passer juste deux minutes à poser une question et que vous vous attendez à ce qu'on prenne une demi-heure à y répondre, il y a un léger déséquilibre. Vous devez préciser les choses, coller le code qui ne va pas, parler du résultat des recherches que vous avez déjà faites pour résoudre le problème.

    Résumons :

    - "Si je tente de modifier n'importe laquelle de ces colonnes" - vous tentez de modifier le contenu ou la structure ? Quelles colonnes ? Avec quel code ?
    - "celle-ci est modifiée AVEC ou SANS .Update" - ça veut dire quoi ? quel est le résultat ? comment savez-vous que [quoi ?] est modifié ?
    - "La ligne ne peut être trouvé, etc..." -- etc ??

    Enfin, question subsidiaire : êtes-vous dans le bon forum. ça ressemble fort à de l'ADO.NET dans .NET. ou du VB, bref un langage client.
    Ici, c'est le forum SQL Server, le truc qui est de l'autre côté d'ADO.NET quand vous ouvrez une connexion.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut
    Bonjour et merci de m'avoir répondu

    Pour le forum c'est effectivement de l'ADO mais avec VB6, s'il existe un forum spécifique ADO, désolé.

    Je veux modifier le contenu des colonnes à l'aide de l'instruction:
    monrecordset.Fields("Nom_de_la_colonne").Value = Nouvelle_Valeur
    (si j'arrête le programme juste après, c'est là que je me suis aperçu (contrairement à ce que je croyais) que ma colonne a bien été mise à jour (la nouvelle valeur est visible si j'ouvre la table avec SQL Manager). Le type de la colonne n'a aucune importance (date, Integer ou Varchar).

    L'instruction monrecordset.Update fait planter (Erreur d'exécution 80040e38 - La ligne n'a pas pu être trouvé pour la mise à jour. Certaines valeurs ont peut-être changé depuis leur dernière lecture).
    Si c'est le cas, je ne vois pas quelles valeurs étant donné qu'il aurait fallu par exemple que je tente de modifier une clé, le tri, or rien de tout ça. Ce recordset est des plus basiques.

    Quant à mes différents essais. Ce que je décris c'est après mes essais. Primitivement, le recordset comportait une clause WHERE et une clause ORDER que j'ai supprimé pour les mettre hors de cause.

    J'ai bien conscience qu'il est très difficile de se plonger dans un problème issu d'une appli complexe sans rien en savoir et j'essaye de simplifier au maximum (peut-être trop) pour ne garder que ce qui me parait essentiel.

    Voilà et merci encore

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Est-ce que la table qui est derrière a une clé primaire ? Ton VB6 doit bien pouvoir faire une clause WHERE pour mettre à jour la ligne que tu traites, et si une valeur a changé peut-être que la clause WHERE ne correspond plus à une ligne existante dans la table.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut
    Bonjour et merci de ta réponse,

    La table a bien une clé primaire. C'est la colonne AutoIncrement qui là l'est pas touché puisqu'il s'agit d'une mise à jour.
    De toutes façons je n'y touche jamais même pas pour la modifier par elle-même !!!

    Quant à la clause WHERE elle est à priori hors de cause puisque l'erreur se produit aussi en son absence.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut
    J'ai des éléments nouveaux que je vais essayer d'expliquer:

    En fait j'ai 2 Recordsets qui n'ont (jusqu'à preuve du contraire) de commun que la table sous-jacente:

    Le 1er est issu de la SP suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		SELECT 	P.*
    		FROM		T_Planned	AS P
    		WHERE	P.MOVIE_STATUS = @STATUS_ID
    qui me ramène une dizaine de lignes ayant donc le même STATUS.

    Mon 2ème recordset est issu de la SP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		SELECT 	*
    		FROM		T_Planned
    		WHERE	MOVIE_ID = xxxx
    donc la même table sous-jacente, mais c'est tout.
    Le second recordset sert en quelque sorte de maître puisque les modifications que j'y fait seront répercutés dans le 1er. Il contient TOUJOURS une seule ligne T_Plannes.MOVIE_ID étant TOUJOURS unique (en fait colonne AutoIncrement d'une autre table, la table maîtresse de toute l'appli.
    Et je me suis aperçu que modifier une seule colonne dans ce second recordset amène cette erreur sur la mise à jour de la colonne correspondante du 1er recordset et ce quelle qu'elle soit, j'ai essayé sur plusieurs colonnes.
    Je continue de chercher pourquoi ces 2 recordsets ont l'air lié et en quoi ils le sont.

Discussions similaires

  1. Requête UPDATE sur HF et position fichier
    Par Hibernatus34 dans le forum HyperFileSQL
    Réponses: 4
    Dernier message: 26/10/2012, 17h10
  2. Réponses: 1
    Dernier message: 09/01/2010, 16h30
  3. [VB2005] Position après un update
    Par Herlece dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/12/2007, 03h07
  4. Réponses: 2
    Dernier message: 17/05/2002, 21h37
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo