1 pièce(s) jointe(s)
Echec d'une connexion distante
Bonjour à tous :P
La connexion de IBConnection réussi sur un réseau local, mais elle échoue sur un réseau virtuel (ex: en utilisant IP trouvée sur MyIPAdress.com)
Pourquoi?:?
message d'erreur:
Pièce jointe 196425
merci d'avance.
1 pièce(s) jointe(s)
Perfectionnement de l'application
Bonsoir, :P
J'ai amélioré le comportement de la transaction(Type:Read Committed), pour la mise à jour conditionnée des applications clientes,
après insertion, modification ou suppression d'un enregistrement.
1/ TRIGGERS:
a/ Insertion
Code:
1 2 3 4 5 6 7 8 9
| SET TERM ^ ;
CREATE TRIGGER TrigAutoInc FOR MEMBRE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
new.COD_MBR=gen_id(AUTOINC,1);
post_event 'INS';
END^
SET TERM ; ^ |
b/ Modification
Code:
1 2 3 4 5 6 7 8
| SET TERM ^ ;
CREATE TRIGGER TrgEdt FOR MEMBRE
ACTIVE AFTER UPDATE POSITION 1
AS
BEGIN
post_event 'EDT';
END^
SET TERM ; ^ |
c/ Suppression
Code:
1 2 3 4 5 6 7 8
| SET TERM ^ ;
CREATE TRIGGER TriDel FOR MEMBRE
ACTIVE AFTER DELETE POSITION 2
AS
BEGIN
post_event 'DEL';
END^
SET TERM ; ^ |
2/ Figure:
Pièce jointe 197612
3/ le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| procedure TForm1.FBEventMonitor1EventAlert(Sender: TObject; EventName: string;
EventCount: longint; var CancelAlerts: boolean);
begin
if EventName='INS' then
if Insertion.Checked then
MEMBRE.Refresh ;
if EventName='EDT' then
if Modification.Checked then
MEMBRE.Refresh ;
if EventName='DEL' then
if Suppression.Checked then
MEMBRE.Refresh ;
end; |
Merci 8-) ***The end***
Récapitulatif de la connexion réseau (basé sur l'expérience).
Bonsoir à tous :P
I/ Etablissement et configuration du réseau distant:
Il existe plusieurs façons d'établir une connexion distante.
Personnellement j'utilise une VPN (Hamachi) gratuite et facilement configurable,
une fois téléchargée et installée, on procède à créer un compte, ensuite à configurer notre
réseau depuis le menu 'Gérer/Gérer les réseaux" et rien de plus facile!
II/Création et configuration de l'application (valable pour tout type de connexion!):
1/Transaction:
Lazarus est déja orienté réseau, seulement ses transactions sont par défaut de type (SNAPSHOT),
on les changerons en type (READ COMMITTED) pour une meilleure adaptation réseau.
-Ajouter une seule transaction à l'application de type (READ COMMITTED) et configurer la ainsi.
Copier isc_tpb_read_committed dans le 'Dialogue d'éditeur de chaînes' (SQLTransaction1/params).
ou:
Code:
SQLTransaction1.Params.Add('isc_tpb_read_committed');
2/La sauvegarde
a/D'un seul enregistrement d'une SQLQuery:
Méthode abrégée et fréquente pour sauvegarder un enregistrement:
Code:
1 2 3 4 5 6
| procedure TForm1.SqlQuery1AfterPost(DataSet: TDataSet);
begin
SqlQuery1.ApplyUpdates ;
SQLTransaction1.CommitRetaining;
end; |
b/ De plusieurs enregistrements appartenants à des SQLQueries interdépendentes:
C'est une sauvegarde spéciale, protégée par une transaction, utilisée dans les milieux professionnels,
particulièrement par les établissements financiers.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| procedure TForm1.SauvegarderClick(Sender: TObject);
begin
try
SQLQuery1.ApplyUpdates;
SQLQuery2.ApplyUpdates;
.
.
SQLQueryn.ApplyUpdates;
SQLTransaction1.CommitRetaining;
except
SQLQuery1.CancelUpdates;
SQLQuery2.CancelUpdates;
.
.
SQLQueryn.CancelUpdates;
SQLTransaction1.RollbackRetaining;
<un eventuel message d''erreur>
end;
end; |
3/L'affichage du changement sur les autres PC:
Par défaut ce changement n'est pas affiché sur les autres PC et ceci est important si l'on désire:
*continuer à travailler uniquement sur l'archive, en cas d'une impression par exemple.
Cependant si l'on désire rafraîchir les données, il suffit d'appliquer un refresh:
-A laide d'un click.
-A l'aide d'un timer.
-Où la meilleure façon à l'aide d'un trigger et d'un FBEventMonitor comme est décrit précédemment.
-0-
merci 8-)