Vous n'êtes pas identifié(e).

#1 Re : .NET » select sur une vue via npgsql » 29/08/2019 21:10:53

Arf. Évidemment.
Voilà ce qui arrive quand on a le C# avec sa normalisation de noms de variables sur un écran et PostgreSQL avec une autre normalisation sur l'autre écran.
Je vais renommer les vues avec une casse pour respecter la normalisation PostgreSQL.
Merci de m'avoir fait remarquer ce que j'avais collé devant le nez et que je ne voyais pas.

#2 .NET » select sur une vue via npgsql » 29/08/2019 15:50:10

Jean-Marc68
Réponses : 2

Salut,

Je code en C# et je me lie à postgresql via npgsql (à jour, version 4.0.9).

Je n'ai aucun problème à accéder aux tables, mais lorsque je crée une vue et que je veux la lire, je reçois un message d'erreur me disant que la table n'existe pas (erreur 42P01)

Voici une vue dans postgresql

CREATE OR REPLACE VIEW public."OCTRencodees" AS 
 SELECT documents.num_document_cadastre AS no_octr,
    documents.minute,
    documents.date_minute,
    documents.ag,
    documents.matricule_ag
   FROM documents
  WHERE documents.type_document::text = 'OCTR'::text
  GROUP BY documents.num_document_cadastre, documents.minute, documents.date_minute, documents.ag, documents.matricule_ag
  ORDER BY documents.num_document_cadastre;

ALTER TABLE public."OCTRencodees"
  OWNER TO jmdeneyer;
COMMENT ON VIEW public."OCTRencodees"
  IS 'Donne la liste des OCTR encodées';

Voici le code de lecture de cette vue

public static MTObservableCollection<MinuteDocument> ListeOCTRencodés()
        {
            NpgsqlConnection conn = new NpgsqlConnection(Properties.Settings.Default.PostGISconnexionString);
            MTObservableCollection<MinuteDocument> listeOCTR = new MTObservableCollection<MinuteDocument>();
            string listeOCTRencodéssql = @"SELECT * FROM OCTRencodees;";
            NpgsqlCommand listeOCTRencodéscommand = new NpgsqlCommand(listeOCTRencodéssql, conn);
            NpgsqlDataReader listeOCTRencodésdr;

            try
            {
                conn.Open();
                using (listeOCTRencodésdr = listeOCTRencodéscommand.ExecuteReader())
                {
                    while (listeOCTRencodésdr.Read())
                    {
                        MinuteDocument octr = new MinuteDocument();
                        int noMandat = 0, noMatricule = 0;
                        DateTime dateMinute = new DateTime();
                        if (int.TryParse(listeOCTRencodésdr["no_octr"].ToString(), out noMandat))
                            octr.Numero = noMandat;
                        if (int.TryParse(listeOCTRencodésdr["matricule_ag"].ToString(), out noMatricule))
                            octr.Matricule = noMatricule;
                        if (DateTime.TryParse(listeOCTRencodésdr["date_minute"].ToString(), out dateMinute))
                            octr.DateMinute = dateMinute;
                        octr.Minute = listeOCTRencodésdr["minute"].ToString();
                        octr.AG = listeOCTRencodésdr["ag"].ToString();
                        listeOCTR.Add(octr);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("la lecture des OCTR encodées a engendré l'erreur suivante.Message : " + ex.Message, ex);
    }
            finally
            {
                conn.Close();
            }
            if (listeOCTR.Count > 0)
                return listeOCTR;
            return null;
        }

Voici le message que je reçois

System.Exception
  HResult=0x80131500
  Message=la lecture des OCTR encodées a engendré l'erreur suivante.Message : ERREUR: 42P01: la relation « octrencodees » n'existe pas
  Source=TopocomArchives
Exception interne 1 :
NpgsqlException : ERREUR: 42P01: la relation « octrencodees » n'existe pas

Qu'est-ce que je fais mal ?
Que dois-je faire pour avoir accès aux vues ?
Merci de vos z'avis z'avisés.

#3 Re : PL/pgSQL » SQL pour itération de fonction avec le contenu d'un champs en argument » 23/08/2019 19:21:57

Je pensais qu'il y avait moyen de le faire sans passer par une autre fonction.
Je vais essayer cela.

Merci.

#4 PL/pgSQL » SQL pour itération de fonction avec le contenu d'un champs en argument » 23/08/2019 15:17:28

Jean-Marc68
Réponses : 7

Salut,

J'ai fais une fonction update "desactiver_couverts(numero_document integer)" qui prend un nombre en argument.
Maintenant que ma fonction fonctionne, je dois la faire fonctionner avec tous les nombres (dans l'ordre croissant de ces nombres, c'est important) contenus dans une colonne.
Le problème est que je ne sais pas (et je n'arrive pas en fonction de ce que j'ai trouvé) à faire l'itération qui va me permettre de rouler la fonction avec les nombres de la colonne en ordre ascendant.

Quelqu'un aurait-il un exemple de SQL à me montrer qui reprendrait un champs pour alimenter une fonction ?

Merci de vos z'avis z'avisés.

Pied de page des forums

Propulsé par FluxBB