Problème de saisi dans une DBGrid

cs_lilo415 Messages postés 18 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 5 avril 2007 - 13 mars 2007 à 16:17
cs_lilo415 Messages postés 18 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 5 avril 2007 - 14 mars 2007 à 09:49
Bonjour,

Voici mon problème, on m'a imposé une contrainte à savoir que je dois déclarer chaque composant de ma dbgrid un par un,
je ne dois pas comme à la normale la relier directement à ma table et ma datasource

ex: je ne peux pas faire :. DBGrid3.selectedField := wDBM.JTab_matable

y a t_il un moyen de relier ma colonne "tcolumns1"  à la fieldName "nom1"??

Je ne sais pas si j'ai été bien clair mais je dois declarer mes colonnes sans les relier avec une table.
Est-ce possible??? je bloque dessus depuis ce matin.

Merci d'avance

Lilo

5 réponses

Utilisateur anonyme
13 mars 2007 à 17:22
Salut,

Je n'ai pas tout compris à ta question enfin si je me fixe à tes mots tu as deux possibilités

1)Via l'inspecteur :
 Déposer un DBGrid
Double cliquer dessus
Ajouter une colonne (Icone jaune)
En valeur de FieldName : ajouter ce que tu veux par exemple "MAISON"
Cliquer sur la forme

2)Par le code

procedure TForm1.FormCreate(Sender: TObject);
begin
 DBGrid1.Columns.Add;
 DBGrid1.Columns[1].FieldName:='salut';
 DBGrid1.Columns[1].Expanded:=True;
 DBGrid1.Columns[1].DefaultReadOnly:=True:
// Ect etct
end;

Avant de faire joue joue avec une colonne il faut la créer.

Pzzz : Fais attention à bien formuler ta question et un titre en rapport avec cette dernière
0
cs_lilo415 Messages postés 18 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 5 avril 2007
13 mars 2007 à 17:40
Bonjour,

Merci pour ta réponse.
J'avoue que j'ai mal formuler ma question.    J'ai déjà crée mes colonnes.

La question se porte sur comment les déclarer dans le code pour permettre la saisi, en faite c'est que je ne peux pas utiliser :

DBGrid3.selectedField := wDBM.JTab_matable ( ce qui me permet de saisi dans mes colonnes)

on m'a démander de déclarer la saisie pour chaque colonne, par exemple: pour ma colonne 1 -> "nom1" je dois permettre à l'utilisateur de saisir le nom.
J'ai essayé en utilisant la propriété "OnEnter", mais ça marche pas

Sinon j'avais pensé les déclarer (les colonnes) dans une variable  et ensuite à la fermeture de la fonction envoyer le tout dans ma base de donnée. mais j'ai pas réussi.

Quelqu'un aurait une idée?? j'ai besoin d'aide.

Lilo
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
13 mars 2007 à 18:56
Bonjour Lilo,

Désolé mais je ne comprend pas ton problème.
Dès qu'un DBGrid est relié à une table (par l'intermédiaire d'un TDataSource) et que tu rends cette table active, il crée par défaut une colonne par champ de ta table. Si la saisie est permise dans le DBGrid (option dgEditing = true), tu peux modifier ou ajouter des données.
L'intérêt d'utiliser la propriété Columns de TDbGrid est de ne pas avoir toutes les colonnes, et/ou de  modifier leur ordre. Dès que tu utilises la propriété Columns, seules les colonnes que tu vas déclarer seront présentes dans le dbgrid.
Donc si tu as fait ce que Francky t'a indiqué : ajouter une colonne, cliquer sur "0 - TColumn" (p.ex.), puis assigner "Nom1" dans la propriété FieldName, cette colonne te permettra de saisir le nom.

A +
Thierry 
0
Utilisateur anonyme
13 mars 2007 à 20:33
@Thierry je pense qu'elle veut créer dynamiquement une table  : pour cela elle veut permettre à l'utilisateur de définir pour chaque colonne la propriété FieldName. Elle veut alors utiliser chacun des FieldNames pour créer dynamiquement une table comportant ces valeurs comme champs.

@lilo : les choses ne sont pas si simples que cela : il faut pas oublier la notion de types. Un champ dans une table n'est pas qu'un simple identifiant. Autrement-dit, même si cela est possible, vu le manque d'information on ne peut absolument pas t'aider.

Cependant la procédure DBGrid1.Columns[x].FieldName:='xxxxx'; te permet bel et bien de définir le FieldName de ta colonne. Pour la procédure associée on ne peut pas t'aider (on ne sait pas si tu utilises une TListBox, un TEdit, des tableaux ect ect). Ensuite même si tu arrives à faire cela, il restera une difficulté bien plus grande : créer la table en utilisant ses valeurs.

Lilo : les bases les bases les bases et encore les bases.

Tu te lances dans un projet qui dépasse de loin tes compétences (sans vouloir te vexer). Fais des choses plus simples

@+
0

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

Posez votre question
cs_lilo415 Messages postés 18 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 5 avril 2007
14 mars 2007 à 09:49
Merci Francky et Thierry pour votre aide.

Je sais que je me lances dans un projet qui dépasse mes compétences mais on m'avait demandé de le faire comme ça, or moi je suis débutante et je n'y arrive pas.
En suivant vos conseils je vais faire les choses plus simple et même si c'est pas bon, j'aurais au moins eu le mérite d'essayer.

Merci à vous deux.A+

Lilo
0
Rejoignez-nous