DevEric
Messages postés2Date d'inscriptionmardi 29 janvier 2002StatutMembreDernière intervention20 janvier 2003
-
5 févr. 2002 à 17:11
cs_Pierre42
Messages postés19Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention22 novembre 2008
-
9 oct. 2007 à 14:09
lorsque j'execute :
MySQLDataSet.CommandType :=ctQuery;
MySQLDataSet.CommandText :='select Symbol From Tb2';
MySQLDataSet.Open;
Si Symbol est définit comme index ou clé primaire (et seulement dans ce cas la). J'ai l'erreur suivante :
Invalid variant type conversion.
Comment solutionner cette erreur.....
Merci +++
Eric
svan1812
Messages postés9Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention 1 novembre 2008 19 janv. 2003 à 15:23
Bonjours ,
a part ce probleme pourrais-tu me dire si tu arrive a te connecter a ta data mysq,car je ramme pour y arriver et j'aimerai bien avoir un exemple qui fonctionne car a la base je développe surtous en php et le delphi me sert pour l'instant a essayer de développez une interface mais je m'accroche..Un grand merci d'avance
Stephane
DevEric
Messages postés2Date d'inscriptionmardi 29 janvier 2002StatutMembreDernière intervention20 janvier 2003 20 janv. 2003 à 14:03
Oui je sais travailler sans problème avec MySql et Delphi.
Il est important de choisir le bonne dll pour libmysql.dll
et dbexpmysql.dll (voir site borland).
private
procedure ReadInitFile(sFilename:string;sSubCateg:string;ObjCon:TSQLConnection);
{ Private declarations }
public
{ Public declarations }
procedure Connect(sFile:String;sGroup:String);
procedure Close();
function GetDataset(sSql:string):TSQLClientDataSet;
procedure GetLocDataSet(sSql:string;ClientDataSet:TSQLClientDataSet);
function UpdateDataSet (sSql:Ansistring):integer;
function LocateDataset (sTable:string;sField:string;sValue:string):Boolean;
end;
var
DMMyUsOptions: TDMMyUsOptions;
implementation
{$R *.dfm}
function TDMMyUsOptions.LocateDataset(sTable:string;sField:string;sValue:string):Boolean;
var
sSqlString:string;
begin
result := false;
//SQLDataSetUpd.DBConnection :=MySQLCon;
SQLDataSetUpd.CommandType :=ctQuery; sSqlString:'select ' + sfield +' from '+ sTable + ' where ' + sField + ' ' + ''''+ sValue+ '''';
SQLDataSetUpd.CommandText := sSqlString;
SQLDataSetUpd.Open;
if SQLDataSetUpd.Active = true then
begin
if SQLDataSetUpd.RecordCount > 0 then
result := true;
SQLDataSetUpd.Close;
end;
end;
procedure TDMMyUsOptions.ReadInitFile(sFilename:string;sSubCateg:string;ObjCon:TSQLConnection);
var
F:textfile;
lig:String;
bFlag:boolean;
iPos:Integer;
begin
bflag:=false;
if (sFileName <> '')and (sSubCateg <> '') then
begin
sSubCateg := '[' + sSubCateg + ']';
assignfile(F,sFileName);
reset(F);
while (not eof(F))and (bflag=false) do
begin
readln(F,lig);
if InStr(0,lig,sSubCateg) = 1 then
begin
while bflag=false do
begin
readln(F,lig);
if InStr(0,lig,'User_Name')=1 then
begin
iPos:=Instr(0,lig,'=');
if iPos > 1 then
begin
iPos:=length(lig)-ipos;
ObjCon.Params.Values['User_Name']:=right(lig,ipos);
end;
end;
if InStr(0,lig,'Password')=1 then
begin
iPos:=Instr(0,lig,'=');
if iPos > 1 then
begin
iPos:=length(lig)-ipos;
ObjCon.Params.Values['Password']:=right(lig,ipos);
end;
end;
if InStr(0,lig,'Database')=1 then
begin
iPos:=Instr(0,lig,'=');
if iPos > 1 then
begin
iPos:=length(lig)-ipos;
ObjCon.Params.Values['Database']:=right(lig,ipos);
end;
end;
if InStr(0,lig,'HostName')=1 then
begin
iPos:=Instr(0,lig,'=');
if iPos > 1 then
begin
iPos:=length(lig)-ipos;
ObjCon.Params.Values['HostName'] :=right(lig,ipos);
end;
end;
if InStr(0,lig,'[END]')=1 then
begin
bflag:=True;
end;
end;
end;
end;
closefile(f);
end;
end;
function TDMMyUsOptions.GetDataset (sSql:string):TSQLClientDataSet;
begin
procedure TDMMyUsOptions.GetLocDataSet(sSql:string;ClientDataSet:TSQLClientDataSet);
begin
if ClientDataSet.Active=True then
begin
ClientDataSet.Close;
end;
ClientDataSet.DBConnection :=MySQLCon;
ClientDataSet.CommandType :=ctQuery;
ClientDataSet.CommandText :=sSql;
ClientDataSet.Open;
end;
function TDMMyUsOptions.UpdateDataSet(sSql:Ansistring):integer;
begin
try
SQLDataSetUpd.CommandText :=sSql;
result := SQLDataSetUpd.ExecSQL;
except
result := -1;
end;
end;
procedure TDMMyUsOptions.Connect(sFile:String;sGroup:String);
begin
ReadInitFile(sFile,sGroup,MySQLcon);
//ReadInitFile('MyUsOptions.txt','MyUsOptions',MySQLcon);
MySQLcon.Open;
end;
procedure TDMMyUsOptions.Close;
begin
if MySQLcon.Connected = true then
begin
MySQLcon.Close;
MySQLcon.Free;
end;
end;
procedure TDMMyUsOptions.DataModuleCreate(Sender: TObject);
begin
cs_Pierre42
Messages postés19Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention22 novembre 2008 9 oct. 2007 à 14:09
Il s'agit d'un bug de la dll de MySQL, qui ne gère pas
convenablement les index en FULLTEXT.
J'ai trouvé deux solutions aussi insatisfaisante l’une que l’autre mais
fonctionnelle :
- soit détruire les index FULLTEXT
- soit intégrer un sub select dans la requête.
Exemple :
Select ID_CLIENT, NOM from
CLIENT
Se traduit par :
Select ID_CLIENT, NOM, count(*) NB, count(*) / (select
count(*) from CLIENT )*100 POURCENT from
CLIENT group by 1
<!--[if !supportLineBreakNewLine]--><!--[endif]-->
Pour obtenir la liste des clients.
Pas très élégant, je vous le concède bien volontiers, mais à moins de revenir
au BDE...
Laurent Rigaldies
France Progiciels Distribution
www.franceprogiciels.com