"too few arguments" sur count_by_sql

Bonjour,

Lorsque j’essaye de compter le nombre d’enregistrement de ma table
saisies suivant une date et une personne j’obtiens l’erreur “too few
arguments”.
Comment dois-je procéder?
Merci d’avance

recherche si la saisie n’existe déjà pas pour la

journéesaisie_rech_matin = Saisie.count_by_sql([“SELECT count() FROM saisies
WHERE date_saisie=? and matin_aprem=1 and
personne_id=?",@saisie_matin.date_saisie,@saisie_matin.personne_id])
saisie_rech_aprem = Saisie.count_by_sql(["SELECT count(
) FROM saisies
WHERE date_saisie=? and matin_aprem=2 and
personne_id=?”,@saisie_aprem.date_saisie,@saisie_aprem.personne_id])

#saisie_rech_matin = Saisie.count( :conditions =>[“date_saisie=? and
matin_aprem=1 and
personne_id=?”,@saisie_matin.date_saisie,@saisie_matin.personne_id] )
#saisie_rech_aprem = Saisie.count( :conditions =>[“date_saisie=? and
matin_aprem=1 and
personne_id=?”,@saisie_aprem.date_saisie,@saisie_aprem.personne_id] )

#si pas de saisie pour la date et la personne
if saisie_rech_matin==0 and saisie_rech_aprem==0

pestak a écrit :

personne_id=?",@saisie_matin.date_saisie,@saisie_matin.personne_id])

#si pas de saisie pour la date et la personne
if saisie_rech_matin==0 and saisie_rech_aprem==0

Aucun interet de faire du SQL dans tes requêtes. Passe par un bon vieux
AR#count


Cyril M.

J’ai essayé comme tu dis c’est les lignes commentées en dessous mais
j’ai la même erreur.

Merci Michel

Cette méthode a l’air sympa.
J’ai juste rajouter dans le contrôleur “Saisie” la ligne
“for_date_saisie”. Mais maintenant plus rien ne fonctionne, j’ai :
Status: 500 Internal Server Error Content-Type: text/html
500 Internal Server Error

Je suis désolée, je débute et pareil il faut installer une gem pour
que ça fonctionne ou autres mais je ne sais pas.
Merci de votre aide.

On 4 déc, 11:18, Michel B. [email protected]

Nota bene : count marche extrêmement bien avec des named_scopes.
Exemples :

En admettant que tu fasse tes modèles Saisie et Personne comme ça :

class Personne < AR::B

has_many :saisies

end

class Saisie < AR::B

belongs_to :personne
named_scope for_date_saisie, lambda { |date| { :conditions => {
:date_saisie
=> date } } }
named_scope for_matin_aprem, :conditions => { :matin_aprem => true }

end

Ca va faire précisément le count que tu veux en une seule requête :

personne.saisies.for_date_saisie(date).for_matin_aprem.count

Magik

Michel B.

2009/12/4 Cyril M. [email protected]

C’est du ActiveRecord::Base de base donc ça n’est pas un plugin
manquant.
Par contre tu utilise peut-être une ancienne version de Rails (comme tu
ne
l’a pas précisé, j’ai supposé que tu étais sur la plus récente) ou que
j’ai
fait une erreur de syntaxe quelque part (genre oublier les : au début du
symbole :for_matin_aprem et :for_date_saisie par exemple), dans tous les
cas
la stack trace devrait t’aider à la source du problème.

Michel B.

2009/12/4 pestak [email protected]

pestak a écrit :

J’ai essayé comme tu dis c’est les lignes commentées en dessous mais
j’ai la même erreur.

Regarde les traces. Là on ne pourra jamais t’aider.


Cyril M.

De toute façon c’est bien les “:” des noms des named_scope qui manquent
(j’ai tapé ça un peu vite). Si ça ne marche pas après avoir corrigé ça,
c’est qu’il y a un autre problème.

Michel B.

2009/12/4 Cyril M. [email protected]