Citation Envoyé par Samuel.chauvigne
Bonjour,

J'ai créé un dataset qui avec une requête SQL classique.
Le problème c'est qu'un de mes champs ne revoie rien alors que la données est bien stockée en base.
(la donnée en question est la requête de création d'une vue qui peut donc parfois être très importante)
J'ai l'impression que le buffer n'arrive pas a stocké toute la valeur du champ et donc qu'il n'affiche rien...

Ce problème est-il déjà arriver à quelqu'un ?
y a t il une solution ?


Merci de votre aide.

Samuel
Citation Envoyé par helpmemorvan
je n'ai pas eu le même problème mais il est vrai qu'il m'arrive de ne pas avoir le bon résultat, cela est souvent du a un problème dans ma requête et aux paramètres. Tu utilises une requêtes simple, si tu as un requêteur sous la main je ne te conseillerai que de tester cette requête sur celui ci pour voir si le problème viens de ta requête ou bien de BIRT.

sinon pour avancer:
-As tu des messages d'erreurs quand tu click sur la prévisualisation de ton résultat ?
-si possible peut tu montrer à quoi ressemble cette requête dite simple (si problème de confidentialité juste la structure"select champ1 from machin where truc bidule")

PS: attention pour les formats vue que je fait fréquemment cette erreur peut etre est ce du à cela.
Citation Envoyé par Samuel.chauvigne
Voici la requête :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
select ind.indic_id as pere, ind.indic_nom, ind.indic_cod, vue.vue_geo_lib, eg.ech_geo_nom,
 isv.table_name, isv.view_definition
from d_metadonnees.t_mtd_vues_geoclip vue, d_metadonnees.t_mtd_indicateurs ind, d_metadonnees.t_mtd_echelle_geo eg,
information_schema.views isv
where vue.indic_id = 4
and vue.indic_pere_id = ind.indic_id
and vue.ech_geo_id = eg.ech_geo_id
and isv.table_schema||'.'||isv.table_name = vue.vue_geo_lib
and vue.statut = 1
and ind.statut = 1

La réponse dans pgAdmin 3 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
2;
"Projection de population 1999-2030 données brutes";
"00001";
"d_indicateurs.v_indgeol_00002_ze";
"Zones d'emploi";
"v_indgeol_00002_ze";
"SELECT (SELECT ze.zon_emp_cod FROM t_ref_geo_zon_emp ze WHERE (ze.zon_emp_id = t.zon_emp_id)) AS ze_cod, (SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2000) AND (t1.zon_emp_id = t.zon_emp_id))) AS pop2000, (SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id))) AS pop2010, (SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id))) AS pop2020, (SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2030) AND (t1.zon_emp_id = t.zon_emp_id))) AS pop2030, ((pow(((float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id)))) / float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2000) AND (t1.zon_emp_id = t.zon_emp_id))))))::double precision, (0.1)::double precision) - (1)::double precision) * (100)::double precision) AS varpoptam2000_2010, ((pow(((float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id)))) / float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id))))))::double precision, (0.1)::double precision) - (1)::double precision) * (100)::double precision) AS varpoptam2010_2020, ((pow(((float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2030) AND (t1.zon_emp_id = t.zon_emp_id)))) / float4((SELECT sum(t1.population) AS sum FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id))))))::double precision, (0.1)::double precision) - (1)::double precision) * (100)::double precision) AS varpoptam2020_2030, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a WHERE ((((t1.annee = 2000) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13)))) AS tauxact_2000, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a WHERE ((((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13)))) AS tauxact_2010, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a WHERE ((((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13)))) AS tauxact_2020, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a WHERE ((((t1.annee = 2030) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13)))) AS tauxact_2030, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a, t_ref_dem_sexe s WHERE ((((((t1.annee = 2000) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13))) AND (t1.sex_id = s.sex_id)) AND ((s.sex_cod)::text = '2'::text))) AS tauxactf_2000, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a, t_ref_dem_sexe s WHERE ((((((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13))) AND (t1.sex_id = s.sex_id)) AND ((s.sex_cod)::text = '2'::text))) AS tauxactf_2010, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a, t_ref_dem_sexe s WHERE ((((((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13))) AND (t1.sex_id = s.sex_id)) AND ((s.sex_cod)::text = '2'::text))) AS tauxactf_2020, (SELECT ((sum(float4(t1.actifs)) * (100)::double precision) / sum(float4(t1.population))) FROM d_variables.t_024_00005 t1, t_ref_dem_age_03 a, t_ref_dem_sexe s WHERE ((((((t1.annee = 2030) AND (t1.zon_emp_id = t.zon_emp_id)) AND (t1.age_03_id = a.age_03_id)) AND (((a.age_03_cod)::integer >= 4) AND ((a.age_03_cod)::integer <= 13))) AND (t1.sex_id = s.sex_id)) AND ((s.sex_cod)::text = '2'::text))) AS tauxactf_2030, (SELECT (sum(float4(t1.population)) / sum(float4(t1.menages))) FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2000) AND (t1.zon_emp_id = t.zon_emp_id))) AS nbpersmymen_2000, (SELECT (sum(float4(t1.population)) / sum(float4(t1.menages))) FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2010) AND (t1.zon_emp_id = t.zon_emp_id))) AS nbpersmymen_2010, (SELECT (sum(float4(t1.population)) / sum(float4(t1.menages))) FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2020) AND (t1.zon_emp_id = t.zon_emp_id))) AS nbpersmymen_2020, (SELECT (sum(float4(t1.population)) / sum(float4(t1.menages))) FROM d_variables.t_024_00005 t1 WHERE ((t1.annee = 2030) AND (t1.zon_emp_id = t.zon_emp_id))) AS nbpersmymen_2030 FROM d_variables.t_024_00005 t GROUP BY t.zon_emp_id ORDER BY (SELECT ze.zon_emp_cod FROM t_ref_geo_zon_emp ze WHERE (ze.zon_emp_id = t.zon_emp_id));"

c'est le dernier champ, contenant la requête sélect qui ne s'affiche pas dans birt...
Citation Envoyé par BiM
Bonjour,

Quels sont les types de tes colonnes dans ta base ?
Quels sont les types en sortie ? (Dans BIRT)
Citation Envoyé par Samuel.chauvigne
Bonjour,

En fait, j'interroge le catalogue, information schema pour les champs suivant :

isv.table_name ==> type : information_schema.sql_identifer
isv.view_definition ==> type : information_schema.character_data

from information_schema.views isv

Quand j'ouvre l'onglet Output column dans BIRT :

table_name ==> type string
view_definition ==> type view

La colonne table_name s'affiche bien dans BIRT mais pas la colonne view_definition.

J'ai essayer les fonctions substr (isv.view_definition, 1, 20) et cast ( isv.view_definition as varchar) pour tester.

ça marche bien sur pgAdmin3, les deux fonctions marchent bien mais ça ne marche pas sur BIRT.

De plus, j'ai aussi essayer de remplir une table test avec un champ varchar qui contient les mêmes valeurs que la colonne view_definition. Si j'interroge cette table sous BIRT, j'arrive a lire le champ, ce n'est donc pas un problème de longueur de champs comme je le pensais...

Le problème viendrait donc du fait que birt n'arrive pas à reconnaitre le type information_schema.character_data ?
Etrange car il reconnait pourtant bien le type information_schema.sql_identifer

Merci de votre aide.
Citation Envoyé par BiM
Bonjour,

Il faut utiliser des choses génériques en JDBC donc les fonctions ne fonctionnent pas. J'ai l'impression qu'en effet, c'est un problème de format. Et je n'ai pas compris pourquoi tu as exclus la longueur.

As-tu essayé avec un format blob en sortie ?
Citation Envoyé par Samuel.chauvigne
En fait, j'ai exclu la longueur car quand le contenu du champ view_definition est dans une table "normale", que j'ai typé en character varying.
j'arrive à le récupérer dans birt.

Tu veux dire par exemple que mon Cast, ne peux pas marcher avec BIRT?

quand tu dis essayer avec un format blob, tu veux dire dans postgre ou dans BIRT?

Comment caste sous BIRT sinon?
Merci