Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2931 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  DBExpress SQL Server

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DBExpress SQL Server

n°783810
palassou
Posté le 01-07-2004 à 16:53:07  profilanswer
 

Bonjour,  
 
J'utilise dbexpress et sql server.  
Quand je veux affecter une date à un paramètre de ma requête avec mon composant TSQLQuery, j'obtiens une erreur : 'MPRI_DATEBDX' nom de colonne incorrect.  
 
Le problème est que ma requête fonctionne, mais c'est mon parambyname qui fonctionne pas.  :pfff:  
 
Code:  
 
sqlquerytravail.sql.add('AND MPRI_DATEBDX BETWEEN :DATEDEB AND :DATEFIN');  
...  
sqlquerytravail.ParamByName('DATEDEB').asSQLTimeStamp := sqlquerytravail.DateTimeToSQLTimeStamp(trunc(FDateDeb));  
sqlquerytravail.ParamByName('DATEFIN').asSQLTimeStamp := sqlquerytravail.DateTimeToSQLTimeStamp(trunc(FDateFin));  
 
 
Merci d'avance  :)

mood
Publicité
Posté le 01-07-2004 à 16:53:07  profilanswer
 

n°784878
auredauv
Posté le 02-07-2004 à 14:15:00  profilanswer
 

quand tu inseres des parametres dans une requête SQL, tu dois mettre ':' devant pour qu'ils soient reconnus comme tels
exemple : 'AND MPRI_DATEBDX BETWEEN :DATEDEB AND :DATEFIN'
si tu les met dans une query et que tu créé des paramètres dynamiquement, il faut les rajouter égalament dans la propriété params pour qu'ils existent comme paramètre
 
donc : après avoir fait ton :
sqlquerytravail.sql.add('AND MPRI_DATEBDX BETWEEN :DATEDEB AND :DATEFIN');  
tu dois aussi faire :
sqlquerytravail.params.add(':DATEDEB');  
sqlquerytravail.params.add(':DATEFIN');  
(le code dua params.add n'est peut-être pas bon, mais c'est dans ce sens qu'il faut travailler)
et ensuite seulement tu peu faire :
sqlquerytravail.ParamByName('DATEDEB').asSQLTimeStamp := sqlquerytravail.DateTimeToSQLTimeStamp(trunc(FDateDeb));  
sqlquerytravail.ParamByName('DATEFIN').asSQLTimeStamp := sqlquerytravail.DateTimeToSQLTimeStamp(trunc(FDateFin));
 

n°784967
palassou
Posté le 02-07-2004 à 15:09:57  profilanswer
 

Merci pour ton aide auredauv,
 
Mes ':' y sont devant c'est juste que ':''D' ca fait un smiley. lol :D
 

n°786060
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-07-2004 à 12:24:24  profilanswer
 

Solution plus simple, je trouve (j'aime pas utiliser ces trucs de paramètres, c'est lent et ça apporte plein de problèmes) :

Code :
  1. sqlquerytravail.sql.add(Format('AND MPRI_DATEBDX BETWEEN %s AND %s', [QuotedStr(FormatDateTime('yyyy''-''mm''-''dd', FDateDeb)), QuotedStr(FormatDateTime('yyyy''-''mm''-''dd', FDateFin))]));


(ce que je fais perso c'est une fonction qui fait l'équivalent du QuotedStr+FormatDateTime pour ne pas devoir répéter ces deux fonctions et le format de la date à chaque coup)


Message édité par antp le 04-07-2004 à 12:24:51
n°786810
palassou
Posté le 05-07-2004 à 12:08:39  profilanswer
 

Merci antp,
 
J'avais déjà essayé cette méthode, ca fonctionne très bien, mais je doi utilisé des parambyname.
 
Es ce que SQL Server avec dbexpress accepte les parambyname?
 
merci d'avance

n°787666
auredauv
Posté le 06-07-2004 à 09:47:00  profilanswer
 

je suis d'accord avec antp pour dire que les params c'est pas top,
sauf que :
quand tu fais un web server là t'es obligé d'utiliser les params et que quand tu fais un web service, tu peux contourner les paramètres et passer la chaîne SQL, mais c'est quand même galère
 
conclusion : autant se mettre au paramètre le + vite possible et ça vaut pour tous les langages
(en plus, avec des paramètres, tu peux rajouter un contrôle sur les types (integer, string, date, ...) directement dans ton application cliente)

n°790358
palassou
Posté le 08-07-2004 à 14:52:46  profilanswer
 

Quelqu'un a t-il déjà eu ce problème?
Si oui, existe-t-il une solution?
 
Merci d'avance :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  DBExpress SQL Server

 

Sujets relatifs
[php/SQL] ajouter des enregistrement a laide d'une textarea[SQL][ASP] affiche des résultats de 2tables avec même nom de colonnes
[Oracle/SQL] Différencier des séries de chiffres et de lettres[php/SQL] filtre sur une liste deroulante
[SQL] dileme (besoin d'un conseil)Problème requête sql base oracle
Valeurs nulles avec un SELECT INTO (PL/SQL)[SGBD/SQL] Optimisation de requête
Procédure moteur de recherche multi-critères (Sql Server) 
Plus de sujets relatifs à : DBExpress SQL Server


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR