Bonjour à tous,
Voilà mon problème :
J'effectue des requêtes avec odbc et récupère leur valeur grâce à des fonctions d'une classe.

Voila le code des fonctions qui me permettent de récupérer les valeurs des requêtes (peu importe la requête).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function requete_sql($cde) {
	$result=odbc_exec($this->sqlconnect, $cde);
	return($result);
}
 
function requete_fetch_array($process) {
	$result = odbc_fetch_array($process);
	return $result;
}
 
function gettb_sql($cde,$cle) {
	$tb = array();
	$result = $this->requete_sql($cde);
	$n = $this->requete_num_rows($result);
        while($row = $this->requete_fetch_array($result)) {
		$key = $row[$cle];
		$ligne = array();
		foreach($row as $cle1 => $valeur)
		{
    //On encode en utf8 puis on stocke dans la ligne
			$ligne[$cle1] = utf8_encode($valeur);
                }
	        $tb["$key"] = $ligne;
        }
        return($tb);
}
Ces fonctions marchent très bien avec 3 de mes requêtes cependant la 4e échoue lors de l'appel à odbc_fetch_array dans la fonction requete_fetch_array.
L'erreur que j'obtiens est : Warning: odbc_fetch_array(): No tuples available at this result index

Voila la requête ($dossier est une variable que je récupère juste avant):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$tb = array();
		$query =   "
                DECLARE @NoDossier varchar(15) = '".$dossier."';
                DECLARE @RespAdmin varchar(5) = (SELECT TOP 1  RespAdm FROM t_brevets  WHERE NoDossier = @NoDossier);
 
                SELECT  TOP 1                t_brevets.idbrevet, t_brevets.refmaxima, t_corrcli.Nom,t_brevets.NoDossier,Complement,Origine,
                                        t_protec.LibelleProtection, t_brevets.Pays,Depot,
                                        NoDepot,PublicationDemande,NoPublication, NoBOPI, PublicationDelivrance, TextePubDelivrance,
                                        PublicationRemiseTraduc, TextePubRemiseTraduc, Abandon,Decheance,t_brevets.Expiration,
                                        DatePriorite,Accord,TexteAccord, t_brevets.Correspondant, ReferenceCorrespondant, GerantAnnuite,
                                        t_dossiers.CodeClient,t_brevets.TitreFrancais,t_brevets.TitreAnglais,t_brevets.Gerant, 
                                        tresponsable.NomResponsable, t_brevets.RespAdm,
                                        (SELECT NomResponsable FROM tresponsable WHERE CodeResponsable = @RespAdmin) AS ResponsAdm,
                                        t_brevets.EtatTitre,t_brevets.ReferenceClient,DonneurOrdre, Prioritaire, DatePriorite,
                                        t_brevets.TexteLibre, libellepays
 
                                        FROM t_brevets
                                        INNER JOIN t_dossiers ON t_brevets.NoDossier = t_dossiers.NoDossier
                                        INNER JOIN t_corrcli ON t_corrcli.Code = t_dossiers.CodeClient
                                        INNER JOIN tpays ON tpays.pays= t_brevets.pays
                                        INNER JOIN t_protec ON t_protec.Protection = t_brevets.Protection
                                        INNER JOIN tresponsable ON tresponsable.CodeResponsable = t_brevets.Responsable
 
                                        WHERE  (t_dossiers.NoDossier = @NoDossier)
                                        AND Depot is not Null AND Abandon is  null";
 
		$champ_unique = "idbrevet";
		$tb = $this->gettb_sql($query, $champ_unique);
J'ai vérifié avec odbc_fetch_into et j'ai bien une ligne retournée par odbc_exec. J'ai également testé ma requête directement sur la base de donnée et je vois bien ma ligne.


Une idée de quelle pourrait être l'erreur ? Merci d'avance.