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 :

Probléme avec TQuery


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Par défaut Probléme avec TQuery
    J'utilise
    une base de données .DBF
    un TDBGRID
    un TQUERY
    un TDATABASE
    des TDBEDIT

    Si je mets comme requéte SQL
    select * from b_nom
    je peux modifier, ajouter et supprimer des enregistrements sans probléme

    par contre si je mets comme requéte SQL
    select * from b_nom order by 1 ASC
    c'est à dire que je demande un tri ascendant sur le champ 1, le tri est effectué correctement mais si je veux modifier, ajouter ou supprimer des enregistrements j''ai le message d'erreur suivant:
    Query1 Impossible de modifier un ensemble de données en lecture seule
    J'ai essayé de voir s'il y avait une propriété read only mais en vain

  2. #2
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 14
    Par défaut
    comment tu t'y prend pour modifier, ajouter, supprimer des enregistrement ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Par défaut
    J'utilise autant de DBEDIT qu'il y a de champs dans la base de donnnées

    Ensuite pour chaque DBEDIT j'indique dans la propriété datafield du DBEDIT le nom du champ concerné

    Avec une requéte SQL sans tri ascendant cela fonctionne correctement mais pas avec un tri ascendant

  4. #4
    Membre éclairé Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Par défaut
    je sais pas , mais our modifier par exemple j'utilise le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    index_ref := ''; // une referance dans le champ par exemple"Num"
    Query.Open;
    with Query do
    begin
    Locate('Num',index_ref,[loPartialKey]);
    Edit;
    Fields.Fields[1].Value := DBEdit1.Text; // la nouvelle valeur se trouve dans DBEDIT et se met dans le fields No 1
    Post;
    Close;
    end;

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Vérifie que tu as bien CachedUpdates à True et un UpdateObject relié à ton Query.

    Si tu as fait un copier coller de ton query, delphi perd l'updateobject du query copié et le rattache au 2ème query que tu aurais pu coller.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par Aide delphi
    Obtention d'un ensemble de résultats modifiable

    Pour obtenir un ensemble de résultats que l'utilisateur puisse éditer dans des contrôles orientés données, définissez la propriété RequestLive d'un composant requête à True. Définir RequestLive à True ne garantit pas un ensemble de résultats dynamique, mais le BDE essaie d'honorer la requête chaque fois que possible. Il existe quelques restrictions sur les requêtes d'ensemble de résultats dynamiques, selon que la requête utilise l'analyseur SQL local ou l'analyseur SQL d'un serveur.

    Les requêtes dans lesquelles les noms des tables sont précédés d'un alias de base de données BDE (comme les requêtes hétérogènes) et les requêtes exécutées sur Paradox ou dBASE sont analysées par le BDE en utilisant le SQL local. Quand une requête utilise l'analyseur SQL local, le BDE offre une gestion étendue des ensembles de résultats dynamiques et modifiables, aussi bien dans les requêtes monotables que multitables. Lors de l'utilisation du SQL local, un ensemble de résultats dynamique d'une requête sur une vue ou une table unique est renvoyé si la requête ne contient aucun des éléments suivants :
    • DISTINCT dans la clause SELECT
    • Jointures (interne, externe ou UNION)
    • Fonctions d'agrégat avec ou sans clauses GROUP BY ou HAVING
    • Vues ou tables de base qui ne peuvent pas être mises à jour
    • Sous-requêtes
    • Clauses ORDER BY non basées sur un index
    • Les requêtes sur un serveur de base de données distant sont analysées par le serveur. Si la propriété RequestLive a pour valeur True, l'instruction SQL doit rester dans les standards Local SQL et se conformer de plus à toute restriction imposée par le serveur, car le BDE en a besoin pour communiquer les modifications de données à la table. Un ensemble de résultats dynamique d'une requête sur une vue ou une table unique est renvoyé si la requête ne contient aucun des éléments suivants :
      • Clause DISTINCT dans l'instruction SELECT
      • Fonctions d'agrégat avec ou sans clauses GROUP BY ou HAVING
      • Références à plusieurs tables de base ou vues modifiables (jointures)
      • Sous-requêtes qui référencent la table dans la clause FROM ou d'autres tables
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. probléme avec TQuery et UTF8 ?
    Par PapY_TcheB dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/02/2010, 11h44
  2. problèmes avec plusieurs TQuery sur un même Form
    Par tomguiss dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2008, 12h22
  3. Problème avec TQUERY et QUICKREPORT
    Par tomguiss dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/11/2007, 21h53
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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