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 :

[Interbase][Débutant] effacer une ligne séléctionnée


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 55
    Points
    55
    Par défaut [Interbase][Débutant] effacer une ligne séléctionnée
    J'ai une base de donnée, et je voudrais effacer la ligne que selectionne l'utilisateur. C'est donc l'évenement oncellclick pour détecter la séléction, mais le probléme, c'est que j'ai un champs, et pas forcément celui qui m'interréssent, en l'occurence la clé primaire.
    Est-ce qu'il faudrait que je passe par TDrawGrid(DBG_table).row puis croiser ça avec le numéro de ma colonne (la premiére en l'occurence, notée à 0 sauf erreur !) et que j'utilise le résultat de tout ceci dans une belle requete commençant par DELETE ?

  2. #2
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    Bonjour, pour te repondre, tu devrais nous dire dans quel composant grille tu affiche ta base de données... Et si elle est liées dynamiquement à tes données, donc si elle possede une propriete de type "tdatasource".

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 55
    Points
    55
    Par défaut
    J'affiche dans un TDBGrid, lié à un datasource via une table, une transaction et un database.

  4. #4
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    C'est la solution la plus simple, le fais de cliquer sur une ligne te positionne directement sur l'enregistrement associé, tu n'a donc juste qu'a saisir ceci:

    nomTable.delete. Cela devrait fonctionner...Pas besoin de SQL...

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 589
    Points : 25 269
    Points
    25 269
    Par défaut
    Normalement, MedGIR a raison, tu as la ligne selectionnée dans la grille qui est accessible via le record en cours du DataSet ... il faut que dans ta requête dans la grille, que tu es mis la colonne ID (caché en runtime, via
    "DataSet.FieldByName('ChampClé').Visible := False", cela fonctionne la plupart du temps avec les Grilles Delphi)

    tout tourne autour de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grid.DataSource.DataSet.FieldByName('ChampClé').AsVariant;
    si tu utilise un TIBQuery
    maintenant LiveMode, t'indiquera si tu peux delete ... ensuite regarde CachedUpdates

    si tu utilise un TQuery (BDE)
    vérifie le RequestLive pour le Delete ...

    mais tu peux faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DeleteQuery.SQL.Text := 'Delete :TableName where :IDName = :IDValue';
    ...
    DeleteQuery.ParamByName('TableName').AsString := '...';
    DeleteQuery.ParamByName('IDName').AsString := 'ChampClé';
    DeleteQuery.ParamByName('IDValue').AsVariant := Grid.DataSource.DataSet.FieldByName('ChampClé').AsVariant;
    si cela ne fonctionne pas avec les Params (ça me supprendrait pas), tu peux faire avec Format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DeleteQuery.SQL.Text := Format('Delete %s where %s =%s', ['...', 'ChampClé', Grid.DataSource.DataSet.FieldByName('ChampClé').AsInteger]);


    DeleteQuery.SQL.Text := 'Delete :TableName where :IDName = :IDValue';

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 55
    Points
    55
    Par défaut
    Ben, j'ai trouvé une solution pas propre.
    Un BDEdit non visible sur la colonne de la clé primaire.
    Quand je clique sur une lignr, le BDEdit se met automatiquement à jour. Il ne me reste plus qu'à faire le delte avec la valeur de ce DBEdit.

    Mais je vais installer vos réponses, largement plus propre que mno bidoullage à moi !!

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  2. [débutant]déplacer une ligne dans CListCtrl
    Par mouss31 dans le forum MFC
    Réponses: 4
    Dernier message: 30/10/2006, 14h32
  3. Table paradox : Effacer une ligne entière
    Par James64 dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/10/2005, 14h11
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Effacer une ligne dans la table nat
    Par vbcasimir dans le forum Sécurité
    Réponses: 2
    Dernier message: 11/01/2004, 00h15

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