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

Bases de données Delphi Discussion :

[DELPHI 7][ADO] La ligne n'a pas pu être trouvé pour la mise à jour.


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut [DELPHI 7][ADO] La ligne n'a pas pu être trouvé pour la mise à jour.
    Bonjour,

    dans un projet DELPHI 7 s'appuaynt sur une basse ACCESS

    J'utilsie JET , j'ai configuré mon adoconnection comme suit :
    Attributs commiretaining et abortretaining à false.
    connect options : coConnectUnspecified
    CrusorLocation :clUseClient
    IsolationLevel : ilCursorStability
    Mode : cmUnknown
    Name :ADOConJEt
    Provider :Microsoft.Jet.OLEDB.4.0

    Mon adoquery :
    Cursor location: clUseClient
    cursor type:ctStatic
    LockType:ltOptimistic
    Marshalloptions:moMarshalAll

    Lors de la validation, de manière aléatoire, un de mes clients a le message :
    "La ligne n'a pas pu être trouvée pour la mise à jour. Certianes valeurs ont peut être changées depuis leur derniere lecture"

    J'ai remplacé le post par une requete de mise à jour, même problème.

    Pouvez vous m'aider svp, je susi un peu sec.

    Meric d'avance.

    Pour une fois que je me passe du BDE, c'etts la cata

    G.

  2. #2
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Citation Envoyé par geros
    ...
    Lors de la validation, de manière aléatoire, un de mes clients a le message :
    "La ligne n'a pas pu être trouvée pour la mise à jour. Certianes valeurs ont peut être changées depuis leur derniere lecture"
    J'ai remplacé le post par une requete de mise à jour, même problème.

    Meric d'avance.

    Pour une fois que je me passe du BDE, c'etts la cata

    G.
    Bonjour,
    Généralement, ce genre d'exception est levée sur une structure Maître/Détail lorsque la table maître a "un trou". c'est à dire lorsque les bases ne sont pas compactées lors de la déconnection et qu'une opération d'insertion a été interrompue intempestivement.
    Voyez du coté de la structure de la table et employez les transactions pour vos opérations de mise à jour.
    Autre cause possible : vous employez des composants qui implémentent un système de contrôle de données, comme les grilles DEVEXPRESS par exemple. Dans ce cas, vous ne devez pas faire vos post sur la table directement mais utiliser le "datacontroller.post" de votre composant.
    Cordialement,
    Hauwke

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    Je viens d'avoir le même problème avec une table Access que j'alimente par ADO et que je visualise, puis finis de compléter manuellement sur une grille . Après avoir fait une saisie, cela me plante sur la ligne suivante.

    Le problème vient du fait que dans la structure de ma table Access, j'avais un champ numérique où j'avais renseigné une "valeur par defaut" de 0 (mais peu importe le chiffre).
    En créant des enregistrements avec Delphi et ADO, je n'avais pas pris la peine d'initialiser ce champ. Delphi le considère alors comme "null", alors que Access voudrait le mettre à la valeur par defaut 0, d'où le message indiquant finalement que "... certaines valeurs ont peut être changé depuis leur dernière lecture".

    => 2 Options si ton champ numérique est mis à jour comme chez moi :

    - Dans Access, mettre une valeur par defaut. Mais dans Delphi initialiser le champ aussi ! Cela semble une perte de temps si valeur 0, mais c'est plus propre et est une bonne habitude pour éviter les problèmes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... FieldByName('xxxxx').Value := 0;
    - ou alors tout simplement, ne pas indiquer dans Access de valeur par defaut et tu es libre alors dans Delphi de ne pas initialiser le champ si tu veux.

    Voilà. Ton problème doit tourner autour de ça j'espère.

    A+
    Consultez :
    - La F.A.Q Delphi + Les Cours Delphi
    - La sélection des Freewares Delphi

  4. #4
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Bonjour,

    La ligne n'a pas pu être trouvée pour la mise à jour. Certaines valeurs ont peut être changées depuis leur derniere lecture
    En fait le message est assez explicite, des données en base ont été modifiées ou supprimées (par un autre dataset), qui empêchent la modification actuelle par le dataset.
    exemple un query1.open et un query2.open, sur le même enregistrement en base ; query2.modifie et poste ; alors query1 dispose d'un jeu de données périmé sur lequel il ne pourra plus avoir aucune action.
    Cela peut donc venir d'un autre dataset sur le même poste, ou du même dataset mais d'un autre poste, entré en accès concurrent sur le même enregistrement.
    Voilà, j'espère que c'est plus clair ainsi...

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    j'opte pour cmen76 ,
    c'est pourqoi j'ai réglé le probléme en passant par des requette sql, pas par les composant (TTable,TQuery,...)
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Je vais remonter ce problèmes qui persiste chez moi, un moment donnée j'ai pu régler le problème avec un refrech juste avant l'édition mais avec le temps ma base a prie du volume le refrech me fait défaut il prend un temps considérable.

    Je sais pas si quelqu'un a trouvez une solution a ce problèmes.

  7. #7
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par edam
    j'opte pour cmen76 ,
    c'est pourqoi j'ai réglé le probléme en passant par des requette sql, pas par les composant (TTable,TQuery,...)

    comment .

  8. #8
    Membre habitué Avatar de colfire_dev
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Novembre 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Novembre 2007
    Messages : 244
    Points : 195
    Points
    195
    Par défaut
    comment vous avez fait avec les requetes sql je me trouve bloqué sur le meme probleme
    A la Recherche du Parfait il faut faire et refaire
    L'homme sage apprend de ses erreurs. L'homme encore plus sage apprend des erreurs des autres.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut slt tt le monse
    voila ce que je vou propose :

    a mon avis si quelqu'un veut faire une M.a.j il vaut mieux reprendre tt les données et ensuite supprimé l'ancienne et la remplacé par la nouvelle et ceci via une requete

    comme tt le monde est content

    Bon courage

  10. #10
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    je crois qu'on utlisant TTable et Tquery, à la mise à jour d'un enregistrement il utlise tout les chmps comme clé de recherche
    mais avec une requet fait à la "main" tu utilise un clé sur un ou 2 champs qui sencé n'étre jamai modifier durant la vie de la base (auto incrémént par example)
    pour ce qui est de réfréche, utilise TclientDataset,
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. La ligne n'a pas pu être trouvée pour la mise à jour
    Par martin45 dans le forum Bases de données
    Réponses: 17
    Dernier message: 18/03/2018, 10h58
  2. %1 n'a pas pu être trouvé
    Par Unknow28 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/11/2007, 22h52
  3. Réponses: 3
    Dernier message: 29/03/2007, 16h05
  4. La ligne n'a pu être trouvée pour la mise a jour
    Par yassine5000 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/11/2006, 18h43
  5. [DELPHI 5] [ADO] [ORACLE 8i] Getfieldnames + Blob....
    Par tpetitpi dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/03/2004, 15h35

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