Affichage des records dans un DBGrid

Utilisateur anonyme - 28 janv. 2007 à 12:44
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 28 janv. 2007 à 16:49
Salut à tous,

Je travaille actuellement sur une base de donnée ou je crée dynamiquement la table et le datasource

With MaDataSource do
  Begin
  AutoEdit:=False;
  Enabled:=True;
  DataSet:=SMTPTable;
  End;
With MaTable do
  Begin
  ReadOnly:=True;
  AutoRefresh:=True;
  TableType:=ttDefault;
  TableName:=Mail_Base;
  Active:=True;
  End;

Je suis sur que les enregistrements ont lieu. Seulement quand j'initialise le DBGrid
DBGrid.DataSource:=MaDataSource;
DBGrid.DataSource.DataSet:=MaTable;

Rien ne s'affiche : plus exactement : les lignes apparaissent en quantité suffisante (si j'ai 5 lignes dans ma base j'ai bien 5 lignes dans le dbgrid) mais il n'y a rien qui s'affiche. Si vous savez pourquoi ??

Merci

3 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
28 janv. 2007 à 15:04
Salut Francky,

Essaie ceci :
with MaDataSource... DataSet:= MaTable;
et supprime la ligne "'DBGrid.DataSource.DataSet:=MaTable;"

Autre chose : ne mets de préférence "MaTable.Active:= true" qu'après avoir relié le DBGrid au DataSource.
 
Amicalement
Thierry
0
Utilisateur anonyme
28 janv. 2007 à 16:02
Merci Thierry

Je viens de faire cela

{>>Procedure pour Paramétrer les composants}
Procedure TMain.parameterization;
Begin
SMTPTable:=TTable.Create(nil);
SMTPDataSource:=TDataSource.Create(nil);
UserManager:=TidUserManager.Create(nil);
Users_Initialization(UserManager);
With SMTPServer do
  Begin
  DefaultPort:=StrToInt(StringReadIni(UsersFile,'Root','Port'));
  If assigned(UserManager) then Active:=True;
  End;
With SMTPDataSource do
  Begin
  AutoEdit:=False;
  Enabled:=True;
  DataSet:=SMTPTable;
  End;
With SMTPTable do
  Begin
  ReadOnly:=True;
  AutoRefresh:=True;
  TableType:=ttDefault;
  TableName:=Mail_Base;
  DBGrid.DataSource:=SMTPDataSource;
  DBGrid.DataSource.DataSet:=SMTPTable;
  Active:=True;
  End;
End;

Lors de la compilation il y a une erreur de violation d'access sachant que cette procedure est lancée dans le OnCreate. Je pense que j'ai du louper un truc mais je vois pas quoi
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
28 janv. 2007 à 16:49
Re-bonjour Francky,

Je viens de tester ta procédure en la lançant du OnCreate.
J'ai dû le faire sur Delphi4, la seule version Delphi pour laquelle j'ai des composants BDD (Paradox, Dbf avec moteur BDE mais sans application client-serveur ).
J'ai donc dû supprimer depuis "UserManager..." jusqu'au end de "With SMTPServer".
J'ai également supprimé la propriété AutoRefresh (pas présente sur Delphi4). 
J'ai assigné à mail_base le nom d'un fichier de type paradox.
J'ai supprimé la ligne "DBGrid.DataSource.DataSet:=SMTPTable;" qui ne sert à rien puisque tu as déjà raccordé le datasource à la table.
Je n'ai aucune violation d'erreur.
Donc Lapalisse dirait : l'erreur vient de ce que j'ai dû supprimer. 
Ton DBGrid est-il créé dynamiquement ? 
Désolé de ne pas pouvoir t'aider plus.

Thierry
0
Rejoignez-nous