begin process at 2012 02 11 06:21:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Bases de données

 > 

SQL... Probléme..


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SQL... Probléme..

jeudi 15 décembre 2005 à 13:05:51 | SQL... Probléme..

cmeme

Salut Very Happy

Voila j'ai deux tables la 1ere TABLE AUTEUR et la 2ème TABLE ECRIRE. j'ai deux clefs primaire dans AUTEUR qui sont NOM_AUTEUR et PRENOM_AUTEUR et dans la TABLE ECRIRE ce sont des clefs externe (NOM_AUTEUR et PRENOM_AUTEUR) ce que j'aimerai savoir faire c'est lorsque je modifie mes champs NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Auteur que celle ci change NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Ecrire également. J'ai deja un code pour modifier NOM_AUTEUR et PRENOM_AUTEUR dans la gestion Auteur elle fonctionne mais elle modifie pas les champs NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Ecrire.

Code:
var
  OldType,OldType1,OldType2,OldType3 :string; // Déclaration de variable
  OldType4,OldType5 :string;

procedure TGes_Auteur.Modifier_AuteurClick(Sender: TObject);
begin
  if  (edit1.Text = '')or (edit2.Text = '')or (edit3.Text = '')or (edit4.Text='') then
      begin
         messagedlg('Veuillez sélectionner le champs à supprimer', mtWarning,[mbok],0);
      end
  else
      with DataModule2.IBQuery_Auteur do
        begin           // Ici on modifie les champs sélectionner
          SQL.Clear;
          SQL.Add('Update AUTEUR set NOM_AUTEUR=:Nom_Auteur, PRENOM_AUTEUR=:Prenom_Auteur, PSEUDONYME=:Pseudonyme, NATIONALITE=:Nationalite');
          SQL.Add('WHERE NOM_AUTEUR = :OldType and PRENOM_AUTEUR = :OldType1 and PSEUDONYME = :OldType2 and NATIONALITE=:OldType3 ');
          DataModule2.IBQuery_Auteur.ParamByName('Nom_Auteur').AsString:=edit1.text;
          DataModule2.IBQuery_Auteur.ParamByName('OldType').AsString:=OldType;
          DataModule2.IBQuery_Auteur.ParamByName('Prenom_Auteur').AsString:=edit2.text;
          DataModule2.IBQuery_Auteur.ParamByName('OldType1').AsString:=OldType1;
          DataModule2.IBQuery_Auteur.ParamByName('Pseudonyme').AsString:=edit3.text;
          DataModule2.IBQuery_Auteur.ParamByName('OldType2').AsString:=OldType2;
          DataModule2.IBQuery_Auteur.ParamByName('Nationalite').AsString:=edit4.text;
          DataModule2.IBQuery_Auteur.ParamByName('OldType3').AsString:=OldType3;
          ExecSQL;
        end;
      with DataModule2.IBQuery_Ecrire do
        begin
          SQL.Clear;
          SQL.Add('Update ECRIRE set NOM_AUTEUR=:Nom_Auteur, PRENOM_AUTEUR=:Prenom_Auteur');
          SQL.Add('WHERE NOM_AUTEUR = :OldType4 and PRENOM_AUTEUR = :OldType5 ');
          DataModule2.IBQuery_Ecrire.ParamByName('Nom_Auteur').AsString:=Ges_Auteur.edit1.text;
          DataModule2.IBQuery_Ecrire.ParamByName('OldType4').AsString:=OldType4;
                 DataModule2.IBQuery_Ecrire.ParamByName('Prenom_Auteur').AsString:=Ges_Auteur.edit2.text;
          DataModule2.IBQuery_Ecrire.ParamByName('OldType5').AsString:=OldType5;
          ExecSQL;
        end;
          Refresh_Auteur.Click; //Bouton qui rafraichi la table AUTEUR
          edit1.Text:='';
          edit2.text:='';
          edit3.Text:='';
          Ajouter_Auteur.Enabled:=true;
          Modifier_Auteur.Enabled :=false;
          Supprimer_Auteur.Enabled :=false;
          Ges_Ecrire.Refresh_Ecrire.click;
end;


P.S: La requête fonctionne mais elle modifie pas les champs NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Ecrire
jeudi 15 décembre 2005 à 21:29:13 | Re : SQL... Probléme..

Delphiprog

Administrateur CodeS-SourceS
Le mieux serait de poser la question sur le site approprié


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
vendredi 16 décembre 2005 à 23:41:47 | Re : SQL... Probléme..

jace1975

Juste une remarque sur le choix de tes clés :

Que se passe-til quand il y deux auteurs ayant le même nom??

je te conseille de (re)voir les 3 fornes normales pour modèliser une base, l'idéal étant pour ton pb d'utiliser un identiefiant technique, genre numéro incrémental dans ta table de référence. de cette façcon tu récupère l'id dans tas première et tu fais un update par rapport à cet ID.
mercredi 9 février 2011 à 16:06:17 | Re : SQL... Probléme..

youcefhac

Je veut faire la recherche dans une table par un intervalle de date dans IBQuery j'ai utilise le code suivante mais ca marche pas
if RadioGroup1.ItemIndex=2 then
begin
DataModule1.IBQuery3.Close;
DataModule1.IBQuery3.SQL.Clear;
DataModule1.IBQuery3.SQL.add('select *');
DataModule1.IBQuery3.SQL.add('from DEMANDES');
DataModule1.IBQuery3.SQL.add('where (DEMANDES.DATE_D)>='+MaskEdit10.Text+' and (DEMANDES.DATE_D)< '+MaskEdit11.Text);
DataModule1.IBQuery3.Open;
end;
le message suivant apparu : expression d'évaluation insupportable
samedi 12 février 2011 à 16:27:22 | Re : SQL... Probléme..

Delphiprog

Administrateur CodeS-SourceS

Je soupçonne fortement un manque d'espace.
Juste sur la ligne contenant DataModule1.IBQuery3.Open, tu mets un point d'arrêt et tu inspectes alors la valeur de la propriété de DataModule1.IBQuery3.Open.Text.
Vérifies au passage que les dates soient correctement formatées (AAAA-MM-JJ).

May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
lundi 14 février 2011 à 14:32:12 | Re : SQL... Probléme..

cantador

Membre Club Administrateur CodeS-SourceS
Bonjour,

@cmeme :

j'ai deux clefs primaire dans AUTEUR qui sont NOM_AUTEUR et PRENOM_AUTEUR


Tu ne peux pas voir deux clés primaires dans une table..
En revanche, tu peux créer une clé primaire qui encapsule deux champs.
Ainsi, chaque enregistrement est caractérisé par :
Auteur + prénom de l'auteur
cette formule peut fonctionner même si elle présente toutefois certains inconvénients..

cantador
mardi 15 février 2011 à 10:55:44 | Re : SQL... Probléme..

jderf

Bonjour,

Si j'ai bien compris, tu as un clé primaire (Nom+Prenom) dans la table AUTEUR et (Nom+Prenom) en clé étrangère dans ECRIRE.

Donc dans ce cas tu fait ça :

UPDATE ECRIRE
SET NOM_AUTEUR=:Nom_Auteur, PRENOM_AUTEUR=:Prenom_Auteur
WHERE NOM_AUTEUR = :OldType
AND PRENOM_AUTEUR = :OldType1

Il faut dans ta clause "where" tester les anciens critère de NOM et PRENOM.

Bonne journée.
jeudi 17 février 2011 à 17:31:06 | Re : SQL... Probléme..

cantador

Membre Club Administrateur CodeS-SourceS

Bonsoir,
si les liens entre les tables et Maj en cascade de choisis, cette opération est automatique.

cantador
vendredi 18 février 2011 à 13:33:19 | Re : SQL... Probléme..

jderf

Oui Cantador, c'est vrai, mais on peut toujours attendre une réponse de Cmeme, sont message date de 2005 !!

C'est youcefhac qu'a posé une question en 2011 !

Youcefhac, Peut-tu nous dire avec quel SGBD tu travails ?
Y'a surement des fonctions de conversion et comparaison de date déja prévu dans le moteur de base.

Jean.
vendredi 18 février 2011 à 14:09:31 | Re : SQL... Probléme..

cantador

Membre Club Administrateur CodeS-SourceS
oh oui, bien vu !
je me suis fait piégé par youcefhac
en 6 ans, je pense qu'il a du trouver quelque chose..

mais pourqouoi avoir utilisé un post de 2005 ?

ah ça y est, j'ai compris..
c'est le moteur de tri de DelphiFr qui nous remonte des vieux crabes
cramoisis, rabougris qui sentent le moisis

Ya quelqu'un ?

cantador


Cette discussion est classée dans : ecrire, auteur, prenom, ibquery, datamodule2


Répondre à ce message

Sujets en rapport avec ce message

Lire et ecrire à une adresse memoire [ par db95 ] Bonjours a tous!Je suis super débutant en delphi et j'aimerais savoir comment faire pour lire et ecrire une valeur à une adresse memoire spécifique. M ecrire des data dans registre [ par crogger ] Salut, je voudrai arriver à ecrire dans la base registre des informations de type DATA...par exemple, une fois détérminé le chemin etc... pouvoir ecri Ecrire dans un edit d'une autre application [ par Hy0Ga ] Je me demandais si quelqu'un saurait comment, a partir d'un programme delphi, écrire dans une Tedit contenue dans une autre application comme IExplore Ecrire dans un bouton [ par magicvinni ] Question facile...sauf pour moi, je voudrait mettre plusiers lignes de text dans un bouton est ce possible?Merci d'avanceMagicVinni Ecrire dans des cases memoires [ par Cask ] Salut à tous, je voudrais savoir comment ecrire dans des cases memoires en delphi. Par exemple ecrire sur le port parallèle (adresse 888 ou H378).J'ai Ecrire en héxadécimal dans un fichier [ par sebastienbro ] Voilà, j'aimerais savoir comment on fait pour écrire en héxadécimal dans un fichier. En fait, je voudrais, par exemple, dire d'écrire $20, et je voudr Problème de read only avec un IBquery [ par lnicos ] je souhaiterais éditer les résultats fourni par mon IBquery, mais j'ai une erreur un retour qui me dit problème car lecteure seule... Pouvez vous m'ai déclarer un type ? [ par minipod ] Je cherche comment déclarer un type ?du style:type clientvar nom prenom pour pouvoir l'utiliser après de cette façon:client.nom := ....client.pre ecrire du texte avec opengl ? [ par waryx ] comment on fait pour afficher du texte sous opengl ?car j aitrouver un tuto en anglais de 315 ligne il y a pas plus simple ?merci bcp gomard@free.fr Utiliser une dbgrid sans base de donnees [ par Servalito ] Voila je me demandais comment faire pour ecrire moi meme dans une Dbgris sans passer par une base de donnes.Ce que je ve c pouvoir mettre les champs m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales