DBEDIT

cs_Metrox Messages postés 267 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 8 septembre 2013 - 21 juil. 2003 à 16:41
bundyboss Messages postés 28 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 3 mars 2005 - 16 déc. 2004 à 23:47
'lut all,
j'ai un problème...noooon?!
Et si!
Bon, alors, j'ai fait un formulaire qui récupère les résultats d'une db dans un champ DBEDIT...seulement, quand je compile, et ke je lance, problème! Impossible de modifier ce qui se trouve dans le champ!!!
Quelqu'un saurait-il m'aider?

Merci!
M@x ---> Go on www.metrox.be

8 réponses

sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
21 juil. 2003 à 17:08
Que fais tu exactement ?

Normalement une table ouverte est en mode dsBrowse et donc pour modifier l'un des champs tu dois deja passer en mode dsEdit...

Le plus simple est de maintenir ta table ouverte et ensuite de faire
MyTable.Edit;

// Tes modif si tu en as

MyTable.Post;
et ainsi les modifications que tu as pu faire sont enregistrer...

A+
Sablor
0
cs_Metrox Messages postés 267 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 8 septembre 2013
21 juil. 2003 à 18:41
eeuuh, ouaip, mais, je t'explique, en fait, j'ai fait une requête, pour récupérer tels et tels champs correspondants à certains critères...ensuite, je les ai mis dans un champ DB edit, et j'aimerais pouvoir modifier ces champs pour pouvoir les updater...je te passe ma source...
merci!
button1 est le bouton qui sert à effectuer la recherche
button2 est celui qui permet d'updater!

procedure Tmodif_fiche.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;Query1.SQL.Add('SELECT * FROM users WHERE (Nom :name) AND (Prenom :surname) AND (Date_naissance = :dateanif)');
Query1.ParamByName('name').AsString:=lenom.text;
Query1.ParamByName('surname').AsString:=leprenom.text;
Query1.ParamByName('dateanif').AsString:=ladate.text;
Query1.open;
users.edit;
DBNOM.DataField:='Nom';
DBPRENOM.DataField:='prenom';
DBID.DataField:='ID';
DBnum.DataField:='numero';
DBphone.DataField:='téléphone';
DBrue.DataField:='rue';
DBville.DataField:='ville';
DBcode.DataField:='code_postal';
DBdate.DataField:='date_naissance';

DBNOM.Visible:=True;
DBPRENOM.Visible:=True;
DBID.Visible:=True;
DBnum.Visible:=True;
DBphone.Visible:=True;
DBrue.Visible:=True;
DBville.Visible:=True;
DBcode.Visible:=True;
DBdate.Visible:=True;

Button2.Visible:=True;
Label2.Visible:=True;
Label3.Visible:=True;
Label4.Visible:=True;
Label5.Visible:=True;
Label6.Visible:=True;
Label7.Visible:=True;
Label8.Visible:=True;
Label9.Visible:=True;
Label10.Visible:=True;

end;

procedure Tmodif_fiche.Button2Click(Sender: TObject);
begin
Query2.SQL.Clear;
Query2.SQL.Add('UPDATE users SET nom= :name, code_postal= :code, date_naissance= :date, téléphone= :phone, prenom= :firstname, ville= :city, rue= :street, numero= :number where ID= :monid');
Query2.ParamByName('name').AsString:=DBNOM.Text;
Query2.ParamByName('code').AsString:=DBcode.Text;
Query2.ParamByName('date').AsString:=DBdate.Text;
Query2.ParamByName('phone').AsString:=DBphone.Text;
Query2.ParamByName('firstname').AsString:=dbprenom.Text;
Query2.ParamByName('city').AsString:=DBville.Text;
Query2.ParamByName('street').AsString:=DBrue.Text;
Query2.ParamByName('number').AsString:=dbnum.Text;
Query2.ParamByName('monid').AsString:=DBID.Text;
Query2.ExecSQL;
end;

M@x ---> Go on www.metrox.be
0
sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
22 juil. 2003 à 10:53
Bon OK je vois le truc...
Alors moi je procede autrement...

Deja essaye d'utiliser un TTable car tu n'utilises qu'une seule table, et definis un index secondaire pour effectuer ta recherche sur le nom le prenom et la date... OK?

Ensuite sur ta TForm mets aussi un TDataSource et dans la propriete DataSet tu choisis ton TTable. Mets aussi un TDBGrid qui te permets d'avoir la liste des enregistrements.

En doubles cliquant sur ta TTable tu obtiens une fenetre pour ajouter les champs que tu veux avoir en acces directe. Click Droit et Ajouter des Champs -> tu selectionnes tous tes champs et tu les ajoutes a la liste. Une fois que tu les as sur la liste tu les selectionne et tu les fais glisser sur ta TForm. Ca te permet d'avoir un acces dessus avec des TDBEdit.

Enfin tu as besoin de quelques boutons : Ajouter, Modifier, Supprimer, Valider, Annuler et sur chacun tu vas pouvoir gerer une propriete.
cmdAjouter -> MyTable.Insert;
cmdModifier -> MyTable.Edit;
cmdSupprimer -> MyTable.Delete;
cmdValider -> MyTable.Post;
cmdAnnuler -> MyTable.Cancel;

Ensuite a toi de gerer le mode Enabled de chaque bouton, et de chaque TDBEdit.

J'espere avoir ete clair!!! ;-)
A+
Sablor
0
cs_Metrox Messages postés 267 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 8 septembre 2013
22 juil. 2003 à 22:50
Déjà, merci de répondre à mes questions...Mais, je ne sais pas comment créer un index secondaire!!! Tu saurais (encore ;-)) m'aider stp!!!

Merci!

M@x ---> Go on www.metrox.be
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
23 juil. 2003 à 17:45
Hello,

Tiens je te donne un exemple de l'aide de delphi 6 :
L'exemple suivant montre comment créer une table.

with Table1 do begin
Active := False;
DatabaseName := 'DBDEMOS';
TableType := ttParadox;
TableName := 'CustInfo';

{ Ne remplace pas une table existante }

if not Table1.Exists then begin
{ Le composant Table ne doit pas être actif }
{ Commence par décrire le type de table et à lui }
{ donner un nom }
{ Décrit ensuite les champs de la table }
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'Field1';
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do begin

Name := 'Field2';
DataType := ftString;
Size := 30;
end;
end;
{ Décrit ensuite tous les index }
with IndexDefs do begin
Clear;
{ Le 1er index n'a pas de nom car il s'agit
{ d'une clé primaire Paradox }
with AddIndexDef do begin
Name := '';
Fields := 'Field1';
Options := [ixPrimary];
end;
with AddIndexDef do begin

Name := 'Fld2Indx';
Fields := 'Field2';
Options := [ixCaseInsensitive];
end;
end;
{ Appelle la méthode CreateTable pour créer la table }
CreateTable;
end;
end;

Bonne prog,
jmp.
0
sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
23 juil. 2003 à 17:48
Heu la tu vas me coller...
Bon si tu as Paradox normalement tu vas dans le menu Table -> Restructurer
Ensuite dans la Combo Propriété de la Table tu sélectionnes Index Secondaire et tu cliques sur le bouton Definir et là au boulot...

Sinon je crois que tu peux utiliser la methode AddIndex de l'objet TTable.
MyTable.AddIndex('NewIndex', 'CustNo;CustName', [ixUnique, ixCaseInsensitive]);

L'aide est assez bien faites sur le sujet...

A+
Sablor
0
cs_Metrox Messages postés 267 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 8 septembre 2013
28 juil. 2003 à 22:00
Tu vas rire, mais j'y arrive pas!!!

Ta vraiment pas une adresse mail sur laquelle je peux t'envoyer ma source...

mon adresse : max@metrox.be

M@x ---> Go on www.metrox.be
0
bundyboss Messages postés 28 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 3 mars 2005
16 déc. 2004 à 23:47
Il est tard pour repondre a ce problème mais pour les suivants qui vont le lire ca peut servir.
On ne peut changer les données dans un DBEdit!!
Il aurai tout simplement fallu que la personne mettre ses données dans un edit tout simple et cela aurai fonctionnné;
C'est tout
0
Rejoignez-nous