Recordset et ADO

Recordset et ADO - Delphi/Pascal - Programmation

Marsh Posté le 23-09-2005 à 19:04:54    


en delphi pour recuperer un recordset je fait comme ceci :

Code :
  1. function execSQL(pcSQL:string):_recordset;
  2. begin
  3.   try
  4.       db.ADOQuery.Close;
  5.       db.ADOQuery.CursorLocation:=clUseClient;
  6.       db.ADOQuery.SQL.Text:=pcSQL;
  7.       db.ADOQuery.Open;
  8.       result:=db.ADOQuery.Recordset;
  9.   expect
  10.       //log exception......
  11.   end;
  12. end;


 
le probleme c que si il y a exception result est nil et la fct qui recupere execSQL va planter
le mieux se serait que je puisse retourner qd mm un recordset valide mais vide
 
 
jai essaye de creer un object recordset dans ce cas mais apparament ce nest pas possible _recordset est "branche" (desole pour le terme) sur un interface puis fait reference a MSADO15.DLL
 
 
tester si recordset est nil dans la function appelante nest pas possible
bon jai pense aussi a faire un "select 1 where 0=1" ou un truc du genre au cas ou il y a excpetion pour qd mm renvoye un recordset mais ca reste crade qd mm :(

Reply

Marsh Posté le 23-09-2005 à 19:04:54   

Reply

Marsh Posté le 24-09-2005 à 16:03:40    

si tu veux un truc vide, tu peux pas faire ca:
 
select null;


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 24-09-2005 à 16:24:53    

[:prosterne] merci bcp vais essayer ca tout de suite

Reply

Marsh Posté le 24-09-2005 à 16:56:40    

select null renvoie qd mm qqch donc mon rs.eof nest pa a true
 
par contre si je fait select * from foo where 0=1 la il est false
 
me faudrait la mm chose mais sans table

Reply

Marsh Posté le 24-09-2005 à 16:59:18    

est ce que tu peux mettre "limit=0" ?


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 24-09-2005 à 17:04:03    

limit c specifique au SGBD non ? comme ca doit tourner aussi bien sous Access ou SQL..........

Reply

Marsh Posté le 24-09-2005 à 17:23:51    

C'est un peu bizarre ton truc :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-09-2005 à 17:32:45    

lideal se serait de faire ca :

Code :
  1. rs:=execSQL('select * from table1, table2');
  2. if Assigned(rs) then
  3. begin
  4.   while not (rs.eof) do
  5.   begin .....
  6.   end;
  7. end;


mais bon si ya moyen de se passer dAssigned

Reply

Marsh Posté le 24-09-2005 à 20:00:34    

qu'est-ce que tu as contre le assigned ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-09-2005 à 20:02:26    

et pourquoi tu ne joues pas plus avec les exceptions ?
 
renvoi l'exception et c'est a la méthode qui a appeler la function d'agir en conséquence...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-09-2005 à 20:02:26   

Reply

Marsh Posté le 24-09-2005 à 20:28:32    

parce que execSQL est appellée dans enormement de procedures (gros projet) et que jai pas envie de remplacer tout ca

Reply

Marsh Posté le 24-09-2005 à 20:35:27    

effectivement...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed