DBEDIT

Signaler
Messages postés
267
Date d'inscription
jeudi 19 septembre 2002
Statut
Membre
Dernière intervention
8 septembre 2013
-
Messages postés
28
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
3 mars 2005
-
'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

Messages postés
58
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
1 octobre 2004

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
Messages postés
267
Date d'inscription
jeudi 19 septembre 2002
Statut
Membre
Dernière intervention
8 septembre 2013

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
Messages postés
58
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
1 octobre 2004

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
Messages postés
267
Date d'inscription
jeudi 19 septembre 2002
Statut
Membre
Dernière intervention
8 septembre 2013

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
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
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.
Messages postés
58
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
1 octobre 2004

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
Messages postés
267
Date d'inscription
jeudi 19 septembre 2002
Statut
Membre
Dernière intervention
8 septembre 2013

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
Messages postés
28
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
3 mars 2005

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