Ajouter des QRDBText

Résolu
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 - 19 avril 2012 à 15:00
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 - 26 avril 2012 à 13:18
Bonjour,

Pas de chance pour moi, je dois reprendre le code d'un type qui est parti de ma boite dans un langage que je n'ai jamais vu/étudié/pratiqué : Delphi5.

Le projet est un petit programme dans lequel on encode des médicaments et une liste s'imprime. Je dois "juste" ajouter un champ d'une table DBase sur ce rapport.

J'ai trouvé une Form qui est un rapport à imprimer avec des Headers, Detail, Sub Detail. Je vois que les autres champs DB sont des objets QRDBText.
J'ai vu un barre d'onglet tout en haut de l'interface Delphi nommé QReport, j'ai pris là dedans des QRDBText que j'ai placé sur mon rapport. Puis j'ai vu dans l'Object Inspector les properties DataSet et DataField que j'ai rempli avec les champs qu'on me demandait d'ajouter au rapport.

Mais quand je test le programme, les zones que j'ai ajoutées restent à blanc par contre tout ce qui s'affichait continue à fonctionner ouf. Donc je suppose qu'il faut initialiser ou garnir les QRDBText mais comment? Il doit y avoir du code source quelque part qui fait ça?

Quand je vais dans VIEW --> FORMS et que je choisi Form4 (c'est celle dont je vous parle), j'ai en même temps un fichier Unit8.pas qui s'ouvre. Ce fichier contient un peu de code mais là je suis paumé de chez paumé et j'aurais besoin de votre avis.

Merci d'avance

unit Unit8;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
QuickRpt, Qrctrls, Db, DBTables, ExtCtrls,IniFiles, StdCtrls, Mask,
DBCtrls;

type
TForm4 = class(TForm)
QuickRep1: TQuickRep;
DataSource1: TDataSource;
Table1: TTable;
DataSource2: TDataSource;
Table2: TTable;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
QRDBText1: TQRDBText;
QRBand1: TQRBand;
QRLabel1: TQRLabel;
QRSysData1: TQRSysData;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRSubDetail1: TQRSubDetail;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRDBText5: TQRDBText;
QRDBText6: TQRDBText;
QRDBText7: TQRDBText;
QRDBText8: TQRDBText;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
index_voulu:longint;
{ Public declarations }
end;

var
Form4: TForm4;

implementation

{$R *.DFM}

procedure TForm4.FormActivate(Sender: TObject);

begin
table2.filter:='Index='+inttostr(index_voulu);
table2.filtered:=true;
end;

procedure TForm4.FormCreate(Sender: TObject);
var zO_FichierIni:Tinifile;
zS_Service:Char;
begin
zO_FichierIni := Tinifile.Create(ExtractFilePath(Application.ExeName)+'USI.ini');
{Lecture dans fichier ini}
zS_Service := zO_FichierIni.ReadString('USI_PARAMETRES','Unit','')[1];
zO_FichierIni.free;
if UpCase(zS_Service)<>'' then
Qrlabel1.caption:='Relevé contradictoire des quantités de stupéfiants en stock - Service ' + zS_Service
else
Qrlabel1.caption:='Relevé contradictoire des quantités de stupéfiants en stock - ERREUR SERVICE';
end;

end.

5 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
20 avril 2012 à 10:17
Salut,

dans le BeforePrint de la bande detail (ou SubDetail), il faut que tu positionnes ta nouvelle table sur le bon enregistrement (qui va alimenter les qrDBTexts).

Pour cela, tu as les
- TTable.Locate() qui fonctionne sans index
- TTable.FindKey() qui fonctionne avec un index

Une autre alternative, est de mettre cette nouvelle table en Master/Detail (proprietes MasterSource et MasterFields je crois).
A+



Composants Cindy pour Delphi
Faites une donation.
3
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
26 avril 2012 à 13:18
Chroniques du jour :

J'ai trouvé, il faut faire ceci :
CREATE INDEX ICodeNum ON 'MEDIC.DBF' (CodeNum)

Et fermer le projet avant car dBaseIII+ n'arrête pas dire table busy sinon (alors que Paradox l'accepte ... pas terrible comme évolution )

J'espère que ça pourra servir à quelqu'un un jour qui sait.
3
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
19 avril 2012 à 16:36
J'ai trouvé que les données de table1 (TTable) et datasource1 (TDataSource) ne pointent pas le DBF que je voulais.

Du coup j'ai ajouté un table3 (TTable) et datasource3 (TDataSource) pour aller chercher le bon DBF.

Maintenant reblocked car comment faire pour relier les PK des deux TDataSource?
0
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
25 avril 2012 à 14:45
Huuuum bien ça, j'avance merci.

J'ai refait un petit schéma de la DB (merci DB-Main) et trouvé les relations dont j'ai besoin. Petit hic je peux remplir MasterSource mais pas MasterFields : tout est grisé.

Mais j'ai découvert une zone fort intéressante dans Database -> Explore.
Ça me montre le schéma sur lequel je travail, mes tables (qui sont des fichiers DB et DBF) et pour chaque table j'ai la liste de fields, indices, ... .

Les tables qui sont déjà reliées entre elles par des MasterFields ont des clés étrangères dans la section "indices". Pas de bol, la table que je dois utiliser pour ajouter les détails à mon Etat n'a rien dans la section "indices" ce qui explique que tout est grisé dans MasterFields à mon avis.
Comment faire pour ajouter des indices, visiblement ça ne se fait pas par l'interface graphique ou alors je n’ai pas compris
0

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

Posez votre question
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
26 avril 2012 à 11:27
Quelques précisions, j'ai des fichiers DB et DBF dans mon projet.

J'ai trouvé ceci:
[list]
les fichiers DB sont des Paradox 5.0, clustered
les fichiers DBF sont des dBaseIII+
/list

Je suis parvenu à créer un indice sur une table/fichier Paradox 5.0
CREATE INDEX IIntitule ON EVENTS (Intitule)
mais j'ai besoin de pouvoir relier un MasterField sur une table dBaseIII+ et là ce n'est pas la même commande et je galère pour trouver des infos.

Si je fais la même chose que pour une table Paradox,
CREATE INDEX ICodeNum ON MEDIC (CodeNum)
j'ai :
Table does not exist.
File or directory does not exist.
File: F:\Db\MEDIC.DB
> le fichier existe bien à cet endroit mais est nommé DBF ce qui me fait penser que cette commande ne fonctionne qu'avec les tables Paradox qui sont en DB.

Toute idée est la bienvenue

Merci d'avance
0
Rejoignez-nous