Lié 2 selections à une impression

Résolu
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011 - 9 août 2008 à 17:14
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 15 févr. 2009 à 21:44
Bonjour à tous et merci d'accorder de l'importance à ma demande ,

Je suis debutant dans delphi 2006 et j'essai de faire un programme pour ma propre utilisation mais je bloque sur un problème j'ai déja suivi pas mal de tutos pour developper ma formation mais aucune ne parle de celle ci .

Je souhaiterais qu'à partir d'une liste -> je choisis 2 séléctions différentes et que ces 2 selections soient imprimables d'une manière très précises . Je m'explique :

Vous prenez 1 tables dans laquelles on tire 2 noms du type : Paul et Luc .  Ces 2 informations finalement prises j'aimerais qu'elles soient imprimables sur une feuille au centre écrit en gros ' Paul / Luc ' .

J'espère avoir été explicite dans mon explication . Si quelqu'un peux m'aider à résoudre mon problème , je le remercie d'avance .

Bonne journée à tous et à toutes .

79 réponses

Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
10 févr. 2009 à 23:09
Non non tu ne me comprends pas tu sais que nous avons 2 dbgrid qui a une base de données rempli soit le TDBGrid1 et un autre grid qui a une base de données identique mais vide permettant ainsi de glisser une selection du premier dans celle du 2ème .

J'ai mis RequestLive à true sur le query2 et j'ai trouvé dgRowSelect pour le Grid1 que j'ai mis aussi a true mais il m'affiche désormais une erreur au drag :

Violation d'accès à l'adresse 004175C5 dans le module 'Project1.exe'.Lecture de l'adresse 000000000.

Merci de m'aider :)
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
11 févr. 2009 à 09:24
un autre grid qui a une base de données identique mais vide

Attention au vocabulaire, ce n'est pas la base qui est vide mais la TABLE..

Pour que cela fonctionne, il faut la même base et deux tables possédant
la même structure.., peu importe si la table2 est vide ou pas.

L'auto-incrémention de la table2 fait que le programme se débrouille avec le compteur !
Il ne faut surtout pas s'en occuper :

Voilà ce que ça donne, dans le grid2, j'ai passé Argentina et Canada et
ça marche !

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 12:44
J'ai essayé de tout bien reprendre mais il me confronte toujours a une 'Violation d'accès' ...
je comprend pas :s
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 12:59
Je te renvoie mon code :

unit projetgarde;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, RpDefine, RpRave,
  RpCon, RpConDS, StdCtrls, Menus, Mask, IBCustomDataSet, IBUpdateSQL;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Label4: TLabel;
    DBGrid2: TDBGrid;
    Query1: TQuery;
    Query2: TQuery;
    DataSource2: TDataSource;
    Query1Nom: TStringField;
    Query1Adressedelapharmacie: TStringField;
    Query1Ville: TStringField;
    Query2Nom: TStringField;
    Query2Adressedelapharmacie: TStringField;
    Query2Ville: TStringField;
    procedure DBGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure DBGrid2StartDrag(Sender: TObject; var DragObject: TDragObject);
    procedure FormCreate(Sender: TObject);
    procedure DBGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure DBGrid1CellClick(Column: TColumn);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  DragRecords: array of variant;
  ASource, DestSource: TDataSource;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
DBGrid1.BeginDrag(true);
end;

procedure TForm1.DBGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  I: integer;
begin
  DestSource := TDBGrid(sender).DataSource;
  if ASource = DestSource then exit;
  try
    TDBGrid(sender).ReadOnly := false;
    TDBGrid(sender).DataSource.DataSet.Insert;
    for I := 0 to TDBGrid(sender).FieldCount - 1 do
      TDBGrid(sender).Fields[I].Value := DragRecords[I];
    TDBGrid(sender).DataSource.DataSet.Post;
  finally
    TDBGrid(sender).ReadOnly := true;
    TDBGrid(sender).DragMode := dmManual;
  end;
end;

procedure TForm1.DBGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TDBGrid) and (TDBgrid(sender).DataSource <> nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Query1.Open;
  Query2.Open;
end;

procedure TForm1.DBGrid2StartDrag(Sender: TObject;
  var DragObject: TDragObject);
var
  I: Integer;
begin
  ASource := TDBGrid(sender).DataSource;
  SetLength(DragRecords, TDBGrid(sender).FieldCount);
  for I := 0 to TDBGrid(sender).FieldCount - 1 do
    DragRecords[I] := TDBGrid(sender).Fields[i].Value;
end;

end.

Merci encore à toi
0

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

Posez votre question
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 13:00
Dans une compilation pas à pas il bug après la ligne rouge :

  finally
    TDBGrid(sender).ReadOnly := true;
    TDBGrid(sender).DragMode := dmManual;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
11 févr. 2009 à 15:05
Dans cet exercice, les deux grids sont en DragMode : dmManual

Si l'erreur persiste cela veut dire que les composants réagissent différemment sous Delphi2006.

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 15:19
La question c'est comment réglé le problème :p ?
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 15:20
Tu pourais m'envoyer ton code pour que je vois si il marche avec moi ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
11 févr. 2009 à 15:46
Donne moi par MP une adresse Email.

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
11 févr. 2009 à 17:33
Très bien j'ai comparé les 2 projets et tu vas être très étonné du résultat. Tout est exactement identique j'avais juste appelé activé Tquery -Divers active mais la je l'ai désactiver.

Donc voila le problème après constatation :

Tu as créé des ajouter les colonnes a ton DBGrid1 en faisant ajouter tous les champs ...
Le problème c'est que lorsque tu as fait ça , tu charges le programme et ta table est directement chargé dans le DBGrid contrairement à moi. Par contre j'ai essayé de changer ta table country par ma table tb1 et j'ai rechangé les champs du tquery ainsi que celle de ton DBGRid1 et comme par magie c'est ma table qui s'affiche et le programme marche nikel ...

Alors faut m'expliquer ? Je fais exactement la même chose que toi sauf que ma table tb1 ne s'affiche pas dans mon DBGrid.

Merci à toi
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
11 févr. 2009 à 18:30
oui, mais la table country2 que je t'ai passée n'est pas dans DBDEMOS
il faut la mettre..et les autres aussi


ou alors il faut créer un autre alia..

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
14 févr. 2009 à 16:40
Salut Cantador désolé pour mon très très très long temps de réponse en réalité j'ai désormais fini le projet la fin s'est très bien déroulé et j'ai une superbe page :)

Phase finale :

Je voudrais créé quelque chose qui pourait installer le logiciel sur un autre pc . Le problème c'est que lorsque le programme se lance il charge DBDEMOS et il va aussi chercher des table tb1 et blanco dans des fichiers bien précis de Delphi .

Comment puis-je faire et quel logiciel utiliser pour créé une archive qui permettrait d'installer ce logiciel sur un autre ordinateur?

Merci à toi , mon projet touche à sa fin grace à toi :)
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 févr. 2009 à 18:02
Il te faudra installer le BDE sur les autres postes..


Jette un eil sur ces liens qui vont t'aider dans ta démarche :



http://delphipage.free.fr/deployerbde.html


http://delphi.developpez.com/faq/index.php?rechercher=bde


bien content que ton projet touche à sa fin..

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
14 févr. 2009 à 18:37
Merci de ta réponse , ou trouver InstallShield version Delphi sur le pc ? Dans quel dossier car je ne suis pas sur de l'avoir :s
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 févr. 2009 à 19:58
InstallShieldExpress est fourni avec le CD delphi 7
Sinon, je ne sais plus..car il y a bien longtemps que j'ai abandonné
DBE + machin !

Cherche sur google

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
15 févr. 2009 à 17:48
J'ai installer l'installshield qui était livré avec le cd de delphi 6 mais malheuresement ce n'est pas du tout la meme interface que sur le tutorial et je me suis cassé la tête à essayer de comprendre comment installer cette satané DBE et j'ai pas trouvé . J'ai cherché avec installshield 11 et installshield express v4 et je trouve pas -_-

Si tu as une solution a me proposer , je prend !

Flash :)
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
15 févr. 2009 à 18:22
Oui, c'est vrai que ce n'est pas évident...
Tu peux aussi trouver l'installation directe du BDE avec un exécutable

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
15 févr. 2009 à 18:53
Quel executable ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
15 févr. 2009 à 21:44
à télécharger...

cantador
0
Rejoignez-nous