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

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2009 à 12:32
Voilà un début mais qui mérite encore d'être amélioré :

unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, DBTables, Grids, DBGrids;


type
  TForm1 = class(TForm)
    Query1: TQuery;
    DataSource1: TDataSource;
    Query2: TQuery;
    DBGrid2: TDBGrid;
    DataSource2: TDataSource;
    Query2Name: TStringField;
    Query2Capital: TStringField;
    Query2Continent: TStringField;
    Query2Area: TFloatField;
    Query2Population: TFloatField;
    DBGrid1: TDBGrid;
    procedure DBGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure DBGrid2StartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure DBGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
//    procedure DBGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
  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.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;


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;


end.

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
8 févr. 2009 à 13:33
J'ai réutilisé ton code mais 2 problèmes s'offrent à moi :

je n'utilise pas de TQuery mais des TTable

J'ai tout de même essayer de remanier le code mais le drag ne se réalise toujours pas ?
Dans ton code tu n'aurais pas oublié le cellclick sur le 1st dbgrid ?

Amicalement , 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
8 févr. 2009 à 13:45
Je te conseille d'utiliser les TQuery au lieu des TTable.
Le clic est inutile puisque le startdrag se déclenche mais il y a peut-être encore des choses à revoir..

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
8 févr. 2009 à 13:48
Je n'ai jamais utilisé les TQuery et il n'y a pas l'air d'avoir la possibilité d'appeler une Table dans celui ci :s
Je test ca ce soir
0

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

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2009 à 14:00
Il n'y a pas l'air d'avoir la possibilité d'appeler une Table dans celui ci


propriété SQL :

select * from MaTable

cantador
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
8 févr. 2009 à 14:35
N'oublie pas de mettre les propriétés
dradmode à dmAutomatic..

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
8 févr. 2009 à 14:56
Le drag s'active j'avais oublié le dmAutomatic mais ne va pas dans la 2ème table :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
8 févr. 2009 à 15:32
chez moi ça marche..
n'oublie pas non plus le requestlive à true dans le query2.

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
8 févr. 2009 à 18:33
En fait je m'y perd la je crois que dans ton code que tu m'as fourni tu as appelé TDBGrid2 le grid qui a la base de données rempli ?

Pourait tu me ziper le projet delphi que tu as fait pour avoir ce code ? Merci beaucoup à 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
8 févr. 2009 à 19:48
c'est très simple, il suffit de sélectionner
DatabaseName : DBDEMOS
pour le grid1, j'ai chois la table contry (select * from country)
et pour le grid2, j'ai dupliqué la même table (pour avoir les mêmes champs bien sûr..) et créer country2.

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
8 févr. 2009 à 22:28
Quand j'ouvre mon TQuery pour recopier les champs de ma table il me trouve donc bien les 3 colonnes et me créé donc 3 TStringField . Je n'arrive pas à glisser ceux ci dans mon tableau TDBGrid merci cantador encore :)
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
9 févr. 2009 à 09:48
Je n'arrive pas à glisser ceux ci dans mon tableau TDBGrid


il faut brancher le grid sur le datasource et activer la table.

cantador
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
9 févr. 2009 à 16:11
ah oui, il y a un souci  avec le drag and drop, ça marche mais uniquement avec le premier enregistrement..
J'ai pas trouvé le moyen de pouvoir le choisir..


Il existe une méthode ancienne mais elle ne fonctionne pas bien non plus :



http://www.delphi3000.com/articles/article_2077.asp?SK



En revanche avec le TcxGrid, ma méthode fonctionne..

cantador
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
9 févr. 2009 à 17:56
Avant de m'interesser au drop j'essaye de config mon tquery ^^ :p

Je te jure qu'il commence a m'enerver :p  

Mon TDBGrid est placé , son datasource pointe sur datasource1.
Le Datasource1 est rempli de la sorte  : http://img5.imageshack.us/my.php?image=dbgridfh9.png
Enfin mon TQuery est configuré de la sorte : http://img25.imageshack.us/my.php?image=tqueryaf7.png
avec comme code SQL : "SELECT * FROM tb1.db"

Alors ou est l'erreur ?
0
Flash11 Messages postés 54 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 14 août 2011
9 févr. 2009 à 19:13
Salut et toujours et encore merci j'utilise la version Borland Developper Studio 2006 de Delphi :)

Oui mais je fais pointer quoi à mon dataset ? il ne me propose que mon Query2 qui n'a en l'occurance rien à voir avec le Query1 sachant que pour le moment je voudrais déja faire marcher mon TDBGrid 1. Si je fais pointer dataset sur Query1 il me dis que je créé une boucle :s

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
9 févr. 2009 à 19:25
de rien..
en tout cas sur l'image transmise il manque un dataset
lequel ?
sinon, c'est clair ça ne peut pas fonctionner..
il en faut un absolument !
teste les deux

cantador
0
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 à 18:37
Salut cantador :s

Oui mais tester les deux quoi ? normalement quesque je devrais pouvoir selectionner dans le dataset pour que cela fonctionne ?
0
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 à 19:18
Alors j'ai très fortement avancé tout d'un coup !

Mes 2 tquery marche mes 2 tableaux sont alors créé l'un plein l'autre vide .

Le drag marche mais la une erreur intervient ( dommage on y était presque :'( ) :

Query2 : Impossible de modifier un ensemble de données en lecture seule .

Merci de m'aider à comprendre ^^ :p

Flash ;p
0
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 à 19:26
J'ai lu sur un de test post que pour ne pas avoir ce message il falait utiliser le composant IBUpdateSQL1  mais je ne sais pas quoi mettre en code SQL.

Ma table pleine est tb1.db et ma table vide est blanco.db . 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
10 févr. 2009 à 21:20
on avance on avance..

l'un plein l'autre vide .
pas normal, l'autre soit le sql n'est pas bon, soit la table n'est pas ouverte.
pas besoin du TUpdateSQL pour l'instant..
RequestLive à true sur le Query2, et
dbRowSelect à true pour le Grid1.

cantador
0
Rejoignez-nous