Bonjour à tous, avant d'expliquer mon problème, je précise que je suis complétement débutant ^^
En gros je travaille sur une application DELPHI qui est actuellement rattachée à une BDD PARADOX.
J'ai créé une nouvelle BDD ( la même que celle en PARADOX ) mais sous
FireBird ( embedded ).. La base marche niquel.
En gros je dois adapter le code DELPHI ( sachant que j'en ai jamais fait :/ ),
pour le rendre compatible avec la nouvelle BDD. Le truc c'est que je ne sais pas du tout comment faire..
Mon problème principal est que je dois remplir les attributs des objets de l'appli DELPHI, avec ceux qu'il y a en BDD.
Je ne pense pas être très clair..
Pour chaque table de la BDD, j'ai une classe donc les attributs correspondent aux champs de mes tables FB.
Je veux instancier mes objets autant de fois que j'ai d'objets dans les tables correspondantes, en leur fournissant comme attributs la valeur des champs de mes tables..
Voici par exemple a quoi ressemble le code DELPHI :
CMarche = Class {Classe des marches}
Private
Public
NumMarche : SmallInt;
Nom : array[0..NBLMAX-1] of String;
AdR1 : Integer; //Mot lecture
AdR2 : Integer; //Bit lecture
IndAdRAr : Integer; //Indice si tableau
TypeMarche : Integer; //0 : Normal; 1 : Format changeover; 2 : Jog; 3 : Auto
Icone : String;
end;
CLMarche = Class {Classe gestion liste marche}
Private
Public
ListMarche : TList;
CurrentMarche : SmallInt;
SelectedMarche : SmallInt;
NbAdrMot : SmallInt;
Busy : Boolean;
Modif : Boolean;
Constructor CreateEmpty;
Constructor Create;
destructor Destroy; override;
procedure Traduit;
procedure Save; //Sauve sur disque (BDD)
function Repair : Integer; //Vérifie les intégrités
function Indice(Num: Integer) : Integer;
end;
Var LMarche : CLMarche;
J'ai honnêtement pas mal chercher sur le net, mais sans trouver grand chose..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Constructor CLMarche.Create; {---------------------------------------------------} var MyTable1, MyTable2 : TTable; MyMarche : CMarche; j: Integer; Begin inherited Create; Busy := True; ListMarche:=TList.Create; MyTable1 := TTable.Create(nil); Mytable2 := TTable.Create(nil); Try MyTable1.DatabaseName := ChemDat; MyTable1.TableName := 'Marche.db'; MyTable1.Open; MyTable1.First; MyTable2.DatabaseName := ChemDat; MyTable2.TableName := 'Marche_T.db'; MyTable2.Open; while not (MyTable1.Eof) do begin Application.ProcessMessages; MyMarche := CMarche.Create; MyMarche.NumMarche := MyTable1.FieldByName('NumMarche').AsInteger; MyMarche.IndAdRAr := MyTable1.FieldByName('IndAdRAr').AsInteger; MyMarche.AdR1 := MyTable1.FieldByName('AdR1').AsInteger; MyMarche.AdR2 := MyTable1.FieldByName('AdR2').AsInteger; MyMarche.TypeMarche := MyTable1.FieldByName('TypeMarche').AsInteger; if not (MyMarche.TypeMarche in [0..3]) then MyMarche.TypeMarche := 0; MyMarche.Icone := MyTable1.FieldByName('Icone').AsString; for j := 0 to NBLMAX-1 do if MyTable2.FindKey([MyMarche.NumMarche,NumLangue[j]]) then MyMarche.Nom[j] := MyTable2.FieldByName('Nom').AsString else MyMarche.Nom[j] := '??'; ListMarche.Add(MyMarche); MyTable1.Next; end; MyTable1.Close; MyTable2.Close; finally MyTable1.Free; MyTable2.Free; end; Modif := false; Busy := False; end;
Le projet qui m'est demandé est en fait plus compliquer que ca, mais je pense que ce que je vous ai dit suffira..
En gros je voudrais savoir a quoi ressemble le code DELPHI précédent pour une BDD FIREBIRD..
Sachant que "Marche_T.db" et "Marche.db" sont deux tables de la BDD PARADOX. Pour Firebird, je voudrai utiliser une requete toute simple genre :
"Select * from Marche_T" et parcourir les lignes en renseignant mon objet.
J'imagine qu'il y aura du SQL, que l'on ouvre pas les tables comme en PARADOX, et qu'on ne parcourt pas les enregistrements de la même facon..
Partager