Accès à une base de données HyperFile

Résolu
meunier82 Messages postés 4 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 11 février 2014 - 10 févr. 2014 à 13:45
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 11 févr. 2014 à 10:12
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

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
10 févr. 2014 à 15:12
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 ?
0
meunier82 Messages postés 4 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 11 février 2014
10 févr. 2014 à 16:06
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
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
10 févr. 2014 à 16:23
Tu peux poster un exemple de code pour ton insertion/mise à jour ou suppression ?
0
meunier82 Messages postés 4 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 11 février 2014
10 févr. 2014 à 18:10
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.
0

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

Posez votre question
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
11 févr. 2014 à 08:57
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;


0
meunier82 Messages postés 4 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 11 février 2014
11 févr. 2014 à 10:01
ça marche !!!

Bravo et merci beaucoup

meunier82
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
11 févr. 2014 à 10:12
Avec plaisir ! ;)
0
Rejoignez-nous