Modification DLL [Résolu]

Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
- - Dernière réponse : vico8000
Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
- 21 juil. 2017 à 10:37
Bonjour,

Je suis en grande détresse. Je ne vois absolument pas comment régler mon problème. (si problème il y a puisque ça marche parfaitement sur une autre application)
Je me connecte à mon serveur SQL de la façon suivante :
try
NorfondTable := TTable.Create(nil);
NorfondTable2 := TTable.Create(nil);
EVENT := TTable.Create(nil);
ADOCO := TAdoConnection.Create(nil);
ADOQuery := TAdoQuery.Create(nil);
ADOCO2 := TAdoConnection.Create(nil);
ADOQuery2 := TAdoQuery.Create(nil);
ADOCOEvent := TAdoConnection.Create(nil);
ADOQueryEvent := TAdoQuery.Create(nil);
except
sleep(100);
end;

Emplacement_Fichier:=Fichier_Ini.ReadString('Variables_globales','Emplacement_EVENT','');
Nom_Table := Fichier_Ini.ReadString('Variables_globales','Nom','');
Catalog := Fichier_Ini.ReadString('Variables_globales','Catalog','');
Nom_Serveur := Fichier_Ini.ReadString('Variables_globales','Nom_Serveur','');
Password := Fichier_Ini.ReadString('Variables_globales','Password','');
User_ID := Fichier_Ini.ReadString('Variables_globales','User_ID','');
AdoQueryEvent.ConnectionString:='Provider=SQLOLEDB.1;Password=' + Password + ';Persist Security Info=True;User ID=' + User_ID + ';Initial Catalog=' + Catalog + ';Data Source=' + Nom_Serveur;
CommandeSQL := 'Provider=SQLOLEDB.1;Password=' + Password + ';Persist Security Info=True;User ID=' + User_ID + ';Initial Catalog=' + Catalog + ';Data Source=' + Nom_Serveur;
with AdoCoEvent do Begin
ConnectionString:='Provider=SQLOLEDB.1;Password=' + Password + ';Persist Security Info=True;User ID=' + User_ID + ';Initial Catalog=' + Catalog + ';Data Source=' + Nom_Serveur;
ConnectOptions:=CoAsyncConnect;
OnConnectComplete:=MaConnectComplete;
OnExecuteComplete:=MaConnectionExecuteComplete;
loginPrompt:=False;
Connected:=true;
End;


Les deux fonctions que j'utilise dans mon with sont les suivantes :
procedure TReadWriteDBFile.MaConnectComplete(Connection: TADOConnection;const Error: Adoint.Error; var EventStatus: TEventStatus);
begin
adoCommand1:=TADOCommand.Create(nil);
ConsoleTrace('Activation de la table EVENEMENT (SQL)', DebuggLevel1);
if EventStatus=esErrorsOccured then
Begin
//Une fois DBase supprimer, ajouter ici la partie secours de la base EVENT
ConsoleTrace('Problème d''activation de la table EVENEMENT (SQL). Passage en mode secours.', DebuggLevel1);
End
else
begin
with adoCommand1 do begin
Connection:=adoCo;
ExecuteOptions:=[eoAsyncExecute]+[eoExecuteNoRecords];
Execute;
ConsoleTrace('Activation de la table EVENEMENT (SQL) OK', DebuggLevel1);
end;
end;
end;

procedure TReadWriteDBFile.MaConnectionExecuteComplete(Connection: TADOConnection; RecordsAffected: Integer; const Error:Adoint.Error; var EventStatus: TEventStatus; const Command: _Command;const Recordset: _Recordset);
begin
MessageDlg(IntToStr(RecordsAffected)+' modifications effectués',mtInformation,[mbOK],0);
end;


Le thread plante au moment ou j'utilise cette fonction :

AdoQueryEvent.Last;


Je sais que ça plante à partir de ce point la puisque j'utilise des ConsoleTrace pour écrire dans la console DOS les différents événements rencontrés au cours de l’exécution.

J'aimerais donc savoir pourquoi ça plante à ce moment précis ?

Question bonus : A quoi sert un AdoQuery.Active ? Que fait il exactement ? Que retourne t'il ? (Je ne trouve rien de très intéressant a ce sujet.)

Cordialement.
Afficher la suite 

Votre réponse

2 réponses

Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
0
Merci
Bon, j'ai peut être trouvé la solution a mon problème et si c'est ce que je pense, j'ai très honte ...
Commenter la réponse de vico8000
Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
0
Merci
Du coup, nouveau problème.

Quand j'utilise AdoQuery.Open ou AdoQuery.ExecSQL, ça plante.
J'essaye juste d'utiliser une Requête
Select * From Ma_table
.
Je ne comprend pas, je suis largué total.

Cordialement.
vico8000
Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
-
CommandeSQl := 'if exists (SELECT * From ' + Nom_Table + ');';
ConsoleTrace('if exists (SELECT * From ' + Nom_Table + ');', DebuggLevel1);
AdoQueryEvent.SQL.text := CommandeSQL;
ConsoleTrace('SQL.Text', DebuggLevel1);
AdoQueryEvent.Open;
ConsoleTrace('OPEN', DebuggLevel1);
AdoQueryEvent.SQL.Clear;
ConsoleTrace('SQL.CLEAR', DebuggLevel1);
CommandeSQL := '';
vico8000
Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
> vico8000
Messages postés
291
Date d'inscription
lundi 18 janvier 2016
Dernière intervention
14 février 2018
-
J'ai l'impression que je ne peux exécuter aucune fonction des AdoQuery et AdoConnection. Cela n'est pas restraint à OPEN ou EXECSQL. Rien ne marche. Aurais-je oublié quelques chose ?
Commenter la réponse de vico8000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.