begin process at 2010 02 10 11:04:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Bases de données

 > 

Invalid variant type avec DBexpress et MYSQL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Invalid variant type avec DBexpress et MYSQL

mardi 5 février 2002 à 17:11:56 | Invalid variant type avec DBexpress et MYSQL

DevEric

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

dimanche 19 janvier 2003 à 15:23:00 | Re : Invalid variant type avec DBexpress et MYSQL

svan1812

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



>
lundi 20 janvier 2003 à 14:03:49 | Re : Invalid variant type avec DBexpress et MYSQL

DevEric


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).

exemple de source:

unit MyDBCon;

interface

uses
SysUtils, Classes, DBXpress, DB, SqlExpr, FMTBcd,Functions, Provider,
DBClient, DBLocal, DBLocalS;

type
TDMMyUsOptions = class(TDataModule)
MySQLCon: TSQLConnection;
MyClientDataSet: TSQLClientDataSet;
SqlDataSetUpd: TSQLDataSet;
procedure DataModuleCreate(Sender: TObject);

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

MyClientDataSet.DBConnection :=MySQLCon;
MyClientDataSet.CommandType :=ctQuery;
MyClientDataSet.CommandText :=sSql;
MyClientDataSet.Open;

result :=MyClientDataSet;
end;


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

SQLDataSetUpd.SQLConnection :=MySQLCon;
SQLDataSetUpd.CommandType :=ctQuery;

end;

end.



-------------------------------
Réponse au message :
-------------------------------

> 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
>
>
mardi 9 octobre 2007 à 14:09:53 | Re : Invalid variant type avec DBexpress et MYSQL

Pierre42

Membre Club

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


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


Cette discussion est classée dans : type, invalid, variant, dbexpress, mysqldataset


Répondre à ce message

Sujets en rapport avec ce message

DBGRID, ADSI, ADO [ par DENNLER ] Erreur :Impossible de convertir le variant de type (Array variant) en type (String) J'utilise les composants TADOQUERY,TDatasource et Tdbgrid avec une opération [ par barbichette ] Est-il possible de créer de nouvelles affections d'oppérations. C'est à dire avoir la possiblité d'additionner (c:=a+b) avec d'autres types que chaine Creation d'une application avec base de donnée simple...help [ par VirusCrazy ] Bonjour, Utilisant Delphi 7, je dois crer un logiciel pour une gestion commerciale de vente de produits. Jusqu'ici rien de bien compliqué . Le logic Récupérer des données avec un classeur d'OpenOffice [ par darky93 ] J'ai créé un petit programme pour me familiariser avec le contrôle d'OpenOffice. J'arrive à ouvrir un document type classeur, à modifier le nom des fe 1)paradox et le type float. 2),3)dbgrid [ par kam81 ] bonjour,1)quand je crée une table paradox, et je veux declarer un champ comme étant float,je ne retrouve pas le type dans la liste des choix,aidez moi nombre de page dans un documnet type pdf ou word [ par yvessimon ] Bonjour,Avant d'imprimer un document de type pdf ou word je souhaite vérifier le nombre de page de ce document.Aussi comment lire ce nombre de page ?M Retrouvailles avec le Pascal [ par MillePattes ] Bonjour à tous ! C'est mon premier message et je voudrais me présenter. J'ai fait du Turbo-Pascal en amateur (mais à un niveau correct, je crois) il y Sélection d'une police True Type [ par EddiTheHead ] Bonjour,Dans un RichEdit, est-il possible de sélectionner une police True Type qui n'est pas installée dans le répertoire "Fonts"?J'aimerai afficher l pointeurs [ par plusweb ] Bonjour,j'aurai besoin d'aide concernant les pointeurs...C'est ma deuxieme année de pratique de delphi et j'attaque les pointeurs... J'ai trois exos a POO : problème d'héritage [ par thierryC ] Bonjour, Dans un programme en Delphi6, j'ai le souci suivant : une classe A contient un objet de type Classe B ; dans cette classe B, je crée un obje


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,159 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales