Base de Données Paradox 7

Résolu
tsainvet Messages postés 95 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 14 décembre 2017 - 22 mars 2012 à 15:24
tsainvet Messages postés 95 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 14 décembre 2017 - 14 mai 2012 à 17:41
Bonjour je suis sous delphi 7

jai un petit souci au quel je n 'arrive pas a comprendre les raisons du bug
mon petit programe tous simple de base de donnée me met ce message !!
<<impossible de convertir le variant de type(string) en type (double)>>
et lorsque je poursuis en pas a pas il me dit que mon champ quantite en est la cose ?..

je vous explique mon programe qui est une petite gestion de cave a vin
j'ai donc créé une table paradox 7 avec des champs (A) pour tous ce qui est du texte et des champs N pour tous ce qui est chiffres

lorsque je saisie mes éléments pas de souci ils apparaissent bien dans mon dgrid mais lorsque je valide ma saisie boom !! j'ai ce message erreur

avans cela fonctionnait !!!

je ne comprend plus !!!

[b]
form de visualisation, saisie,ou modification/b

unit TH1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, OleServer, ExcelXP, Menus,
DB, DBTables, Mask, RzBorder, jpeg, RzButton, DBCtrls, RzBckgnd, Buttons,
ComCtrls;



type
TBDTH1 = class(TForm)
Image1: TImage;
Label2: TLabel;
Image17: TImage;
MessageAlerte: TRzLEDDisplay;
DataSource2: TDataSource;
Table2: TTable;
Menu: TMainMenu;
Fichier1: TMenuItem;
Nouveau1: TMenuItem;
Modifier1: TMenuItem;
Quitter1: TMenuItem;
Imprimer1: TMenuItem;
Fiche1: TMenuItem;
BasedeDonne1: TMenuItem;
saisie1: TMenuItem;
NouvelleFiche1: TMenuItem;
H1: TMenuItem;
H2: TMenuItem;
H3: TMenuItem;
H4: TMenuItem;
H5: TMenuItem;
tri1: TMenuItem;
RH1: TMenuItem;
RH2: TMenuItem;
RH3: TMenuItem;
RH4: TMenuItem;
CasierTH1: TMenuItem;
RM1: TMenuItem;
RM2: TMenuItem;
RM3: TMenuItem;
RM4: TMenuItem;
RM5: TMenuItem;
RM6: TMenuItem;
RM7: TMenuItem;
RM8: TMenuItem;
RM9: TMenuItem;
Casierstm1: TMenuItem;
M1: TMenuItem;
M2: TMenuItem;
M3: TMenuItem;
M4: TMenuItem;
CasiersRB1: TMenuItem;
RB1: TMenuItem;
RB2: TMenuItem;
RB3: TMenuItem;
CasiersTB1: TMenuItem;
B1: TMenuItem;
B2: TMenuItem;
B3: TMenuItem;
N1: TMenuItem;
CasierCH1: TMenuItem;
CH1: TMenuItem;
CH2: TMenuItem;
CasiersCM1: TMenuItem;
CM1: TMenuItem;
Casiers1: TMenuItem;
CB1: TMenuItem;
CB2: TMenuItem;
N2: TMenuItem;
CasiersA1: TMenuItem;
FG1: TMenuItem;
FG2: TMenuItem;
FG3: TMenuItem;
FG4: TMenuItem;
FG5: TMenuItem;
FG6: TMenuItem;
FG7: TMenuItem;
FG8: TMenuItem;
FG9: TMenuItem;
CasiersfilsGauche1: TMenuItem;
FD1: TMenuItem;
FD2: TMenuItem;
FD3: TMenuItem;
FD4: TMenuItem;
FD5: TMenuItem;
FD6: TMenuItem;
FD7: TMenuItem;
FD8: TMenuItem;
FD9: TMenuItem;
N3: TMenuItem;
Divers1: TMenuItem;
VoirLesCasiers1: TMenuItem;
MCasier1: TMenuItem;
Importer1: TMenuItem;
Excel1: TMenuItem;
XT1: TMenuItem;
N5: TMenuItem;
Aide2: TMenuItem;
appropos1: TMenuItem;
ExcelApplication1: TExcelApplication;
Panel1: TPanel;
Panel2: TPanel;
DBGrid1: TDBGrid;
Edit1: TEdit;
Label1: TLabel;
GBSaisie: TGroupBox;
LabelNom: TLabel;
Image6: TImage;
LabelQuantite: TLabel;
LabelAquisition: TLabel;
LabelApogee: TLabel;
LabelEveil: TLabel;
Image4: TImage;
Image3: TImage;
Image5: TImage;
Image2: TImage;
LabelCouleur: TLabel;
LabelAppellation: TLabel;
LabelCru: TLabel;
LabelCepage: TLabel;
Image7: TImage;
LabelRegion: TLabel;
Label6: TLabel;
Label3: TLabel;
Label4: TLabel;
DBAquisition: TDBEdit;
DBQuantite: TDBEdit;
DBMillesime: TDBEdit;
DBNom: TDBEdit;
DBRegion: TDBEdit;
DBAppellation: TDBEdit;
DBCru: TDBEdit;
DBCepage: TDBEdit;
DBCouleur: TDBEdit;
DBType: TDBEdit;
DBEveil: TDBEdit;
DBApogee: TDBEdit;
Validesaisie: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
GBModifier: TGroupBox;
RzBackground1: TRzBackground;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label24: TLabel;
Label30: TLabel;
Label19: TLabel;
Label18: TLabel;
Label20: TLabel;
Label16: TLabel;
Label22: TLabel;
Label21: TLabel;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBComboBox2: TDBComboBox;
DBEdit14: TDBEdit;
DBEdit15: TDBEdit;
DBComboBox1: TDBComboBox;
DBComboBox3: TDBComboBox;
DBComboBox4: TDBComboBox;
DBEdit16: TDBEdit;
DBEdit17: TDBEdit;
DBEdit18: TDBEdit;
DBEdit19: TDBEdit;
DBRichEdit1: TDBRichEdit;
Validemodif: TRzBitBtn;
Qmodif: TRzBitBtn;
SuprimeFiche: TRzBitBtn;
RzBitBtn4: TRzBitBtn;
RzBitBtn6: TRzBitBtn;
RzBitBtn7: TRzBitBtn;
DBNavigator1: TDBNavigator;
DBnumero: TDBEdit;
Label7: TLabel;
Label5: TLabel;
RzBitBtn8: TRzBitBtn;
RzBitBtn9: TRzBitBtn;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label15: TLabel;
Label17: TLabel;
RzBitBtn5: TRzBitBtn;
Image33: TImage;
DBAnnotation: TDBMemo;
Image14: TImage;
StatusBar1: TStatusBar;
Image8: TImage;
DBCasier: TDBComboBox;
Table2N: TAutoIncField;
Table2Casier: TStringField;
Table2Quantite: TFloatField;
Table2Nom: TStringField;
Table2Region: TStringField;
Table2Appellation: TStringField;
Table2Millesime: TStringField;
Table2Cepage: TStringField;
Table2Couleur: TStringField;
Table2Type: TStringField;
Table2Cru: TStringField;
Table2Eveil: TStringField;
Table2Apogee: TStringField;
Table2Aquisition: TStringField;
Table2Annotation: TStringField;
MaskEdit1: TMaskEdit;

procedure Mise_a_jour(DataSet: TDataSet);
procedure ValidemodifClick(Sender: TObject);
procedure SuprimeFicheClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ValidesaisieClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure QmodifClick(Sender: TObject);
procedure RzBitBtn5Click(Sender: TObject);
procedure RzBitBtn9Click(Sender: TObject);
procedure RzBitBtn8Click(Sender: TObject);
procedure DBCasierChange(Sender: TObject);



private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
BDTH1: TBDTH1;
SELECT : STRING ;
implementation

uses MultiRechercheTH1, ChoixTH1, SaisieOK;

{$R *.dfm}



procedure TBDTH1.ValidemodifClick(Sender: TObject);
begin
Table2.Active := True;
Table2.Refresh;
end;

procedure TBDTH1.SuprimeFicheClick(Sender: TObject);
var rep : integer;
begin
rep:= MessageBox(Handle,'Etes-vous sûr de vouloir suppirmer ce Vin ?',
'Avertissement',MB_OKCANCEL or MB_ICONSTOP ) ;
if (rep =IDOK) then// test si réponse OK
Table2.Delete; // Suppression de l'enregistrement
Fichier1.Enabled := true; // active l'item du menu Fichier
Table2.Last;
Table2.Append;

end;

procedure TBDTH1.FormCreate(Sender: TObject);
begin

GBSaisie.Visible:= false;;
GBModifier.Visible:= false;
Table2.Open;
Table2.First;

Edit1.text:='0'; //Efface le contenu de l edit1
Table2.First;
repeat
Edit1.text:=inttostr(strtoint(edit1.text)+BDTH1.Table2.FieldValues['Quantite']);
Table2.next;
until table2.eof=true;
end;

procedure TBDTH1.ValidesaisieClick(Sender: TObject);
begin
Table2.Last;
Table2.Refresh;
Table2.Last;
Table2.Insert ;

Table2.Edit; // Positionne la table en mode Edition

Table2.FieldByName('Nom').Value := Table2Nom.Text;
Table2.FieldByName('Region').Value := Table2Region.Text;
Table2.FieldByName('Millesime').Value := Table2Millesime.Text;
Table2.FieldByName('Appellation').Value := Table2Appellation.Text;
Table2.FieldByName('Cru').Value := Table2Cru.Text;
Table2.FieldByName('Cepage').Value := Table2Cepage.Text;
Table2.FieldByName('Couleur').Value := Table2Couleur.Text;
Table2.FieldByName('Type').Value := Table2Type.Text;
Table2.FieldByName('Eveil').Value := Table2Eveil.Text;
Table2.FieldByName('Apogee').Value := Table2Apogee.Text;
Table2.FieldByName('Aquisition').Value := Table2Aquisition.Text;
Table2.FieldByName('Quantite').Value := Table2Quantite.Text;
Table2.FieldByName('Annotation').Value := Table2Annotation.Text;



//Mon appliquation ce bloc ici


Table2.Post(); // Valide l'édition dans la base de données
//Fichier1.Enabled := true; // Active le menu

Table2.Last;
oksaisie.ShowModal;

end;

procedure TBDTH1.Mise_a_jour(DataSet: TDataSet);
VAR St : STRING;
begin
Str(Table2.RecordCount,St);
MaskEdit1.EditText:=St;
end;

procedure TBDTH1.BitBtn3Click(Sender: TObject);
begin
Table2.Active := True;
Table2.Refresh;
OkSaisie.Show;
end;

procedure TBDTH1.QmodifClick(Sender: TObject);
begin
Table2.Active := true;
end;



procedure TBDTH1.RzBitBtn9Click(Sender: TObject);
begin
GBSaisie.Visible := false ;
GBmodifier.Visible:=false;
RechercheTH1.ShowModal;
end;


procedure TBDTH1.RzBitBtn8Click(Sender: TObject);
begin
MenuChoixTH1.ShowModal;
end;





procedure TBDTH1.DBCasierChange(Sender: TObject);
begin
DBCasier.Items.Add('TH1');
DBCasier.Items.Add('TH2');
DBCasier.Items.Add('TH3');
DBCasier.Items.Add('TH4');
DBCasier.Items.Add('TH5');
DBCasier.Items.Add('RH1');
DBCasier.Items.Add('RH2');
DBCasier.Items.Add('RH3');
DBCasier.Items.Add('RH4');
DBCasier.Items.Add('RM1');
DBCasier.Items.Add('RM2');
DBCasier.Items.Add('RM3');
DBCasier.Items.Add('RM4');
DBCasier.Items.Add('RM5');
DBCasier.Items.Add('RM6');
DBCasier.Items.Add('RM7');
DBCasier.Items.Add('RM8');
DBCasier.Items.Add('RM9');
DBCasier.Items.Add('TM1');
DBCasier.Items.Add('TM2');
DBCasier.Items.Add('TM3');
DBCasier.Items.Add('TM4');
DBCasier.Items.Add('RB1');
DBCasier.Items.Add('RB2');
DBCasier.Items.Add('RB3');
DBCasier.Items.Add('TB1');
DBCasier.Items.Add('TB2');
DBCasier.Items.Add('TB3');
DBCasier.Items.Add('CH1');
DBCasier.Items.Add('CH2');
DBCasier.Items.Add('CM1');
DBCasier.Items.Add('CB1');
DBCasier.Items.Add('CB2');
DBCasier.Items.Add('FG1');
DBCasier.Items.Add('FG2');
DBCasier.Items.Add('FG3');
DBCasier.Items.Add('FG4');
DBCasier.Items.Add('FG5');
DBCasier.Items.Add('FG6');
DBCasier.Items.Add('FG7');
DBCasier.Items.Add('FG8');
DBCasier.Items.Add('FG9');
DBCasier.Items.Add('FD1');
DBCasier.Items.Add('FD2');
DBCasier.Items.Add('FD3');
DBCasier.Items.Add('FD4');
DBCasier.Items.Add('FD5');
DBCasier.Items.Add('FD6');
DBCasier.Items.Add('FD7');
DBCasier.Items.Add('FD8');
DBCasier.Items.Add('FD9');
end;

form de selection saisi,modification ou recherche


unit ChoixTH1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzBckgnd, RzButton;

type
TMenuChoixTH1 = class(TForm)
BoutonSaisie: TRzBitBtn;
BoutonModifier: TRzBitBtn;
BoutonQuiter: TRzBitBtn;
RzBackground1: TRzBackground;
procedure BoutonSaisieClick(Sender: TObject);
procedure BoutonModifierClick(Sender: TObject);
procedure BoutonQuiterClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
MenuChoixTH1: TMenuChoixTH1;

implementation

uses TH1;

{$R *.dfm}

procedure TMenuChoixTH1.BoutonModifierClick(Sender: TObject);
begin
BDTH1.ValideModif.Enabled:= true;;
BDTH1.SuprimeFiche.Enabled:=true;
BDTH1.GBSaisie.Visible:=false;
BDTH1.GBModifier.Visible:= true;
//BDTH1.GbModifier.Top:=281;
//BDTH1.GBModifier.Left:=207;
BDTH1.Table2.Active := True;
BDTH1.Table2.Append;
BDTH1.Table2.Refresh;
MenuChoixTh1.close;
end;

procedure TMenuChoixTH1.BoutonQuiterClick(Sender: TObject);
begin
close;
BDTH1.close;
end;

procedure TMenuChoixTH1.BoutonSaisieClick(Sender: TObject);
begin
bdth1.Table2.Active := True;
//bdth1.Table2.Refresh;
bdth1.Table2.Last ;

bdth1.Validesaisie.Enabled:= true;
bdth1.GBSaisie.Visible:= true;
BDTH1.GBModifier.Visible:= false;
bdth1.Table2.Insert ;
bdth1.Table2.Append;

MenuChoixTh1.close;
end;


end.

2 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
23 mars 2012 à 10:59
Salut,

le problème lorsque tu fais ça:
Table2.FieldByName('Quantite').Value := Table2Quantite.Text;
c' est que tu ne vérifies pas que Table2Quantite.Text a une valeur, et si oui, si celle-ci est de même type que le champ.

Le mieux est de faire comme ça pour chaque champ et selon son type:
var VariableEntier: Integer;
begin

...

if Table2Quantite.Text <> '' then
begin
if TryStrToInt(Table2Quantite.Text, VariableEntier) then
Table2.FieldByName('Quantite').AsInteger := variableEntier;
end;

A+


Composants Cindy pour Delphi
Faites une donation.
3
tsainvet Messages postés 95 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 14 décembre 2017
14 mai 2012 à 17:41
avec un poile de retard merci pour cette solution .

qui va amélioré cette parti.

toute fois mon problème au finale était simplement qu'il acceptait pas de valeur nul!! :-(


merci encore pour votre réponse

amicalement TS
3
Rejoignez-nous