Tupdatesql ?

shiners Messages postés 4 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 13 mars 2003 - 12 mars 2003 à 12:59
shiners Messages postés 4 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 13 mars 2003 - 13 mars 2003 à 03:20
Bonjour j'ai deux tables PDOX
Ma table x:indx_primaire,champ1;
Matable2 :indx_primaire,indx_secondaire,champ2;

je veux faire une insertion dans ma table2 de manière à prendre en compte ma jointure.
Que dois je utiliser le query ou update, l'aide de delphi est limité concernant l'update;
Pouvez vous me donner un exemple. Merci!!!

3 réponses

TheShAmAn Messages postés 148 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 1 février 2006
12 mars 2003 à 14:58
Si des enregistrements sont deja existant ds ta table2 alors, tu peux utiliser un Udpate...
Sinon, tu devras forcement utiliser un INSERT INTO du genre :
CorpsReq:= 'INSERT INTO t_stats(stat_val, stat_lib_id, act_id, stat_pourc) VALUES (' + P[x] + ', ' + Libelle + ', ' + NumActStr + ', 1)';
Dans VALUES, en dehors de la derniere valeur, ce sont des variables. ;)

CorpsReq, je l'appel ds mon objet Requete ke g creer :

procedure TAccessObjet.QuerryBA(CorpsReq: string);
begin
if frmba.DataBaseConnectBA.Connected = true then
begin
frmba.RequeteBA.Close;
frmba.RequeteBA.SQL.Clear;
frmba.RequeteBA.SQL.Add(CorpsReq);
frmba.RequeteBA.ExecSQL;
end
else
MessageDlg('Vous n''êtes pas connecté de la base de données des BA.', mtInformation, [mbOk], 0);
end;

Pr finir, pr un UPDATE, regardes ds le forum Base de Données, j'avais posé la question, et on m'avais repondu ;)

Bonne prog ;)
En espérant avoir repondu a ta kestion...
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
12 mars 2003 à 20:55
De tout évidence, tu dois utiliser ET un composant TQuery ET un composant TUpdateSql.
Un seul composant TQeury suffit. C'est le texte de la requête qui détermine le nombre de tables à mettre à jour.
Exemple de requête multitable :
Soit deux tables :
Table1 contient 2 champs, nom de fichier : F1 :
idNom et nom (id est la clé primaire)
Table2 contient 3 champs, nom de fichier F2 :
idAdresse, adresse et IdNom. idAdresse est la clé primaire et IdNom est la clé étrangère.
MaRequete :'Select nom, adresse from F1, F2 where F2.IdNomF1.IdNom'; 


Pour info :
object1-(datasource)->objet2
signifie que Objet1 est relié à Objet2 par la propriété Datasource.
Query1.Sql.text := MaRequete;
Query1-(UpdateObject)->UpdateSql1;


Ensuite, tu double cliques sur le composant UpdateSql1 et un éditeur apparait.

Par défaut, le composant TUpdateSql sélectionne tous les champs des deux colonnes "Champs clés" et "Mettre à jour les champs. Les champs clés sont ceux représentant les colonnes composant la clé primaire, par nature.
Si tu as un doute, tu peux cliquer sur le bouton "clé primaire".
NB : si certains des champs de tes tables comportent des espaces dans leurs noms, coches la case "noms de champs entre guillemets".
Ensuite, il suffit d'appuyer sur le bouton "Générer le SQL".
Sur le deuxième onglet de la boite de dialogue, il est écrit : "SQL".
Et là, Ôh miracle, Delphi a généré tout le code SQL pour l'ajout, la mise à jour ou la suppression d'enregistrements des tables liées dans la requête.
Après, tout fonctionne tout seul :
En supprimant un enregistrement à l'aide de l'interface utilisateur (tout comme si tu utilises la méthode Delete sur le composant TQuery), le composant UpdateSql1 entre en action et applique la requête SQL de suppression d'enregistrements, etc.
Ce n'est pas plus compliqué qu'une requête simple, c'est juste différent. Et comme la plupart du travail est prise en charge par Delphi, je dirais même que c'est plus simple.
May Delphi be with you
0
shiners Messages postés 4 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 13 mars 2003
13 mars 2003 à 03:20
Ok je m'y attèle et je vous tiens au courant.
@+
0
Rejoignez-nous