Accès à une base de données HyperFile [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
11 février 2014
-
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Bonjour,

Je souhaite accéder en lecture/écriture à une base de données HyperFileSQL (Windev) à l'aide d'une application Delphi 7. J'ai installé le driver ODBC HyperFile.
J'accède sans problème en lecture, par contre il est impossible d'accéder en écriture: plantage systématique,violation d'accès.le site Windev dit pourtant que le driver ODBC HyperfileSQL permet l'accès en lecture et écriture.
Quelqu'un a t-il déjà rencontré ce problème?

7 réponses

Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
ouiiiiii, c'est super lourd...
Par contre ça remonte... Je vais essayer de me rappeler comment j'avais feinté...
Quels composants utilises tu pour tes écritures ?
Messages postés
4
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
11 février 2014

Bonjour,
Je me sens moins seul.

J'utilise le BDE (je sais, c'est pas bien, mais c'est une vieille appli)
avec un TQuery et un TUpdateSQL
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Tu peux poster un exemple de code pour ton insertion/mise à jour ou suppression ?
Messages postés
4
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
11 février 2014

Voici un exemple.
Le premier bouton permet de lire les champs Nom et Prénom de la table Dossiers de la base BHyperfile.
Le second bouton devrait permettre de changer le prénom de Dupond.

unit Essai_ecriture;

interface

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

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
BLire: TButton;
BHyperFile: TDatabase;
BEcrire: TButton;
UpdateSQL1: TUpdateSQL;
Query1: TQuery;
Query1Nom: TStringField;
Query1Prenom: TStringField;
procedure BLireClick(Sender: TObject);
procedure BEcrireClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BLireClick(Sender: TObject);
begin
With Query1 Do
begin
Close;
SQL.Clear;
SQL.Add('Select Nom,Prenom from DOSSIERS');
Open;
end;
end;

procedure TForm1.BEcrireClick(Sender: TObject);
var commande,NomPatient,Prenompatient:string;
begin
With Query1 Do
begin
If Locate('Nom','DUPOND',[]) then
begin
edit;
Query1Prenom.Value:='Jean';
BHyperfile.StartTransaction;
try
ApplyUpdates;
BHyperfile.Commit;
except
BHyperfile.Rollback;
raise;
end;
CommitUpdates;
end;
end;
end;


end.
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
J'ai retrouvé le code que j'avais fait pour écrire dans ces fichues bases...
Apparemment, avec un TQuery créé dynamiquement, j'y parvenais. Essaie avec ça :

With TQuery.Create(nil) do begin
  DatabaseName := [Nom de ton alias HF dans le BDE];
  SQL.Add('Update MATABLE');
  SQL.Add('Set Prenom = '''Jean'''');
  SQL.Add('Where Nom = '''DUPOND'''');
  ExecSQL;
  Free;
end;


Messages postés
4
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
11 février 2014

ça marche !!!

Bravo et merci beaucoup

meunier82
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Avec plaisir ! ;)