Bonjour,
J'aimerais effectuer une comparaison entre des données présentes dans une table "patient" de mysql et les noms des patients présents dans un fichier .txt. L'objectif est d'ajouter le nom de la personne si elle n'est pas encore présente dans la table "patient" de la bdd de mysql.
Voici un exemple de lignes du fichier .txt
aderwel, Yvonne Marie Yvonne19080505655 00007-01 1939-01-01 Dupire 0ABUT990102104024 0A08:00 16031973260536100 RESIDENCE Edel 00007-01
aderwel, Yvonne Marie Yvonne19080505655 00007-01 1939-01-01 Dupire 0ABUT990102104024 0A08:00 16032173260536100 RESIDENCE Edel 00007-01
Le nom de la personne étant "aderwel", j'aimerais donc que si ce nom n'est pas encore dans la bdd mysql, de l'ajouter. Mais bon c'est plus facile à dire qu'à faire... .
Je suis parti sur cette base, mais il doit certainement y avoir plein de fautes...
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 procedure TFficheEnvoi.BitBtn2Click(Sender: TObject); procedure CompareStringLists(List1, List2 : TStringList; Missing1, Missing2, Common1 : TStrings); var I: Integer; J: Integer; begin List1.Sort; List2.Sort; I := 0; J := 0; while (I < List1.Count) and (J < List2.Count) do // tant qu'on est pas à la fin des deux listes begin if List1[I] < List2[J] then begin Missing2.Add(List1[I]); Inc(I); // on incremente i de 1 end else if List1[I] > List2[J] then begin // Missing1.Add(List2[J]); on fait rien car je veux pas l'ajouter Inc(J); // on incrémente j de 1 end else begin Common1.Add(List2[J]); //si c'est identique Inc(I); Inc(J); end; end; for I := I to List1.Count - 1 do Missing2.Add(List1[I]); end; var i, j, k : Integer; List1: TStringList; List2: TStringList; CQuery : TZReadOnlyQuery; begin List1 := TStringList.Create; List2 := TStringList.Create; CQuery:=TZReadOnlyQuery.Create(Nil); try CQuery.Connection:=ZTable4.Connection; CQuery.SQL.Text:='select nom from patient'; // je sélectionne tous les noms des patients CQuery.Prepare; for i := 0 to Memo1.Lines.Count-2 do // pour les lignes qui sont dans le memo2 begin list1:=copy (memo1.Lines[i],1,27); // je copie les 27 premiers caractères de chaque ligne end; list2:=ZTable4nom.Text; // je selectionne tous les noms de la ztable4 List1.Clear(); List2.Clear(); List1.LoadFromFile(OpenDialog1.FileName); List2.LoadFromFile(cquery.SQL); CompareStringLists(List1, List2, missing1, missing2); finally List2.Free; List1.Free; end; end;
Partager