Pb requete entre BDE et ADO [Résolu]

padsou 121 Messages postés jeudi 24 janvier 2002Date d'inscription 13 avril 2010 Dernière intervention - 5 oct. 2005 à 13:08 - Dernière réponse : padsou 121 Messages postés jeudi 24 janvier 2002Date d'inscription 13 avril 2010 Dernière intervention
- 6 oct. 2005 à 09:21
bonjour,

j'ai un souci sur une requete :
d'ordinaire je passe par ADO, mon select fonctionne bien tandis que mon update plante (violation d'accès dans le module "msado15.dll"). J'ai donc décidé de passer par BDE. Mais là mon select ne fonctionne pas du tout car mon mon RecordCount renvoie -1 au lieu de 1. Ma base de données est Sql Server.

Voici le Select :

SqlQuery := 'select * from ' + ADOTable1.TableName
+ ' where datatype = ' + #39 + DataType + #39
+ ' and heurer = { ts ' + #39 + DateTranslated + #39 + '}'
+ ' and wmostation = ' + #39 + WmoStation + #39 + ';';


if SADOConnection1.Connected = False then
SADOConnection1.Connected := True;
SADOQuery1.SQL.Text := SqlQuery;
SADOQuery1.Open;

Voici le Update :

DateTimeToString(HeureZTranslated, 'yyyy-mm-dd hh:nn:ss', HeureZ);
DateTimeToString(DebValTranslated, 'yyyy-mm-dd hh:nn:ss', DateDebutValidite);
DateTimeToString(FinValTranslated, 'yyyy-mm-dd hh:nn:ss', DateFinValidite);
DateTimeToString(DateTranslated, 'yyyy-mm-dd hh:nn:ss', HeureR);
DataMessage := StringReplace(DataMessage, #$D#$A, '''''#$D#$A''''', [rfReplaceAll]);
SADOQuery1.Close;
SADOQuery1.SQL.Text := 'UPDATE ALPHAMSG' + IntToStr(ComputeCodeDay(Now))
+ ' SET heurez={ts ' + #39 + HeureZTranslated + #39
+ '}, datedebutvalidite={ts ' + #39 + DebValTranslated + #39
+ '}, datefinvalidite={ts ' + #39 + FinValTranslated + #39
+ '}, buffersize=' + IntToStr(Length(DataMessage))
+ ', databuffer=' + #39 + DataMessage + #39
+ ', validite=' + IntToStr(Validite)
+ ', TTAAIICCCCYYGGGGBBB=' + #39 + TTAAIICCCCYYGGGGBBB + #39
+ ' WHERE datatype=' + #39 + DataType + #39
+ ' AND heurer={ ts ' + #39 + DateTranslated + #39 + '}'
+ ' AND wmostation=' + #39 + WmoStation + #39
+ ' AND ((heurez>={ts ' + #39 + HeureZTranslated + #39
+ '}) OR (datefinvalidite>={ts ' + #39 + FinValTranslated + #39 + '}));';
SADOQuery1.ExecSQL;

Merci de votre aide...
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
exyacc 163 Messages postés dimanche 20 octobre 2002Date d'inscription 31 juillet 2008 Dernière intervention - 5 oct. 2005 à 18:11
3
Merci
et en utilisant ADOQuery1.RowsAffected ? ca donne le nombre de lignes manipulées par la derniere execution de la requete
exyacc

Merci exyacc 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de exyacc
exyacc 163 Messages postés dimanche 20 octobre 2002Date d'inscription 31 juillet 2008 Dernière intervention - 5 oct. 2005 à 16:10
0
Merci
salut,



deja tu peux mettre QuotedStr(DataType) a la place de #39 + DataType + #39, ca va eclaircir un peu le code ... ;o)

pour utiliser quotedstr , rajoute SysUtils dans tes uses
je continue de lire ....

exyacc
Commenter la réponse de exyacc
exyacc 163 Messages postés dimanche 20 octobre 2002Date d'inscription 31 juillet 2008 Dernière intervention - 5 oct. 2005 à 16:15
0
Merci
pourrais tu mettre dans ton code un showmessage(SADOQuery1.SQL.Text) est mettre ce contenu en ligne, ce serait plus simple a comprendre je pense... ;o)

exyacc
Commenter la réponse de exyacc
padsou 121 Messages postés jeudi 24 janvier 2002Date d'inscription 13 avril 2010 Dernière intervention - 5 oct. 2005 à 17:05
0
Merci
merci de t'y interesser !

je viens juste de résoudre (à moitié) mon souci. Le probleme pour BDE venait du fait que le recordcount est tout simplement buggé (apparement) car juste avant le recordcount je fais désormais :

if not (ADOQuery1.Eof) then
ADOQuery1.Next;

et désormais le recordcount renvoie la bonne valeur.

Pour ADO je cherche toujours...
Commenter la réponse de padsou
padsou 121 Messages postés jeudi 24 janvier 2002Date d'inscription 13 avril 2010 Dernière intervention - 6 oct. 2005 à 09:21
0
Merci
effectivement le rowsaffected marche bien mieux que le recordcount ! merci beaucoup !!
Commenter la réponse de padsou

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.