PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Caractéristiques du champ Table mémoire
  • Fermeture d'une requête
  • Utilisation du Fetch Partiel
  • Les différents types de requêtes
  • Récupération de rubriques de type Float sur Oracle (via ODBC)
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
SQLTable (Fonction)
En anglais : SQLTable
Transfère directement le résultat d'une requête dans un champ Table mémoire (un champ Liste ou un champ Combo), avec possibilité de Fetch Partiel (récupération du résultat par blocs de lignes). Dans un parcours du type "SQLAvance/SQLLitCol", le transfert des informations dans le champ Table se fera à partir de l'enregistrement en cours.
Remarque : Cette fonction doit être utilisée lors d'un parcours du résultat de la requête de type SQLAvance/ SQLLitCol. Si cette fonction est utilisée dans un parcours de type SQLPremier/SQLCol, une erreur fatale est générée. Pour plus de détails sur les différents types de parcours du résultat d'une requête SQL, consultez Types de parcours SQL.
Java Le fetch partiel est automatiquement réalisé par le framework JAVA.
PHP La fonction SQLTable ne fonctionne pas si la requête contient des mémos binaires. Il est nécessaire de traiter séparément les mémos binaires (par exemple les enregistrer avec fSauveTexte).
Versions 18 et supérieures
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
Nouveauté 18
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Exemple
// Transfert dans un champ Table : récupération sans fetch
ResSQL = SQLExec("SELECT NOMCLI,PRENOMCLI FROM FACT", "REQ1")
SI ResSQL ALORS
SQLTable("REQ1", TABLE_TabReq, "Nom du client" + TAB + "Prénom", "30 20")
// Calcule le nombre d'enregistrements résultat
NbEnr est un entier = TableOccurrence(TABLE_TabReq)
SINON
// Erreur SQL
FIN
SQLFerme("REQ1")
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)
// Transfert dans un champ table : récupération uniquement des 25 premiers
ResSQL = SQLExec("SELECT NOMCLI,PRENOMCLI,VILLE FROM FACT", "REQ1")
SI ResSQL ALORS
// Avoir uniquement les 25 premières lignes
SQLTable("REQ1", TABLE_TabReq, 25)
SINON
// Erreur SQL
FIN
SQLFerme("REQ1")
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)
// Transfert dans un champ Table : récupération par Fetch
ResSQL = SQLExec("SELECT NOMCLI,PRENOMCLI,VILLE FROM FACT", "REQ1")
SI ResSQL ALORS
// Récupération par groupe de 28 lignes
TANTQUE SQLTable(28,"REQ1", TABLE_MATABLE, "ColTitre", "90")
// Traitement  
SINON
// Erreur SQL
FIN
SQLFerme("REQ1")
Syntaxe

Transfert dans un champ Table mémoire sans Fetch Partiel Masquer les détails

SQLTable(<Nom de la requête> , <Champ Table> , <Nombre de lignes maximum> [, <Titre des colonnes>] , <Largeur des colonnes>)
<Nom de la requête> : Chaîne de caractères (avec ou sans guillemets)
Nom de la requête créée et exécutée avec la fonction SQLExec (avec guillemets), ou exécutée avec la fonction SQLExecWDR (avec ou sans guillemets).
Java Le nom de la requête doit obligatoirement être entre guillemets.
<Champ Table> : Nom de champ
Nom du champ Table mémoire dans lequel le résultat de la requête doit être affiché.
<Nombre de lignes maximum> : Entier
Nombre de lignes maximum affichées dans le champ Table. Si ce paramètre est précisé, le champ Table contiendra au maximum <Nombre de lignes maximum> lignes affichées, même si le résultat de la requête contient un nombre supérieur de lignes.
<Titre des colonnes> : Chaîne de caractères optionnelle
Liste de tous les titres des colonnes du champ Table mémoire. Les différents titres sont séparés par TAB. Pour préciser uniquement la largeur des colonnes, ce paramètre peut correspondre à une chaîne vide ("").
<Largeur des colonnes> : Chaîne de caractères
Liste de toutes les largeurs des colonnes, séparées par un caractère espace. Pour préciser uniquement le titre des colonnes, ce paramètre peut correspondre à une chaîne vide ("").
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxCode Utilisateur (MCU)

Transfert dans un champ Table mémoire avec Fetch Partiel Masquer les détails

SQLTable(<Nombre de lignes dans un bloc> , <Nom de la requête> , <Champ Table> [, <Titre des colonnes>] , <Largeur des colonnes>)
<Nombre de lignes dans un bloc> : Entier
Nombre de lignes constituant un bloc pour le Fetch Partiel. Seul ce bloc de lignes est chargé en mémoire, les blocs suivants sont automatiquement chargés en mémoire en tâche de fond.
<Nom de la requête> : Chaîne de caractères (avec ou sans guillemets)
Nom de la requête créée et exécutée avec la fonction SQLExec (avec guillemets), ou exécutée avec la fonction SQLExecWDR (avec ou sans guillemets).
<Champ Table> : Nom de champ
Nom du champ Table mémoire dans lequel le résultat de la requête doit être affiché.
<Titre des colonnes> : Chaîne de caractères optionnelle
Liste de tous les titres des colonnes du champ Table mémoire. Les différents titres sont séparés par TAB. Pour préciser uniquement la largeur des colonnes, ce paramètre peut correspondre à une chaîne vide ("").
<Largeur des colonnes> : Chaîne de caractères
Liste de toutes les largeurs des colonnes, séparées par un caractère espace. Pour préciser uniquement le titre des colonnes, ce paramètre peut correspondre à une chaîne vide ("").
Remarques

Caractéristiques du champ Table mémoire

Le nombre de colonnes du champ Table mémoire doit être suffisant pour accueillir toutes les colonnes du résultat de la requête.

Fermeture d'une requête

Une requête est fermée automatiquement :
  • après l'exécution de la fonction SQLTable si le Fetch partiel n'est pas utilisé.
  • dès que le résultat de la requête est récupéré en totalité si le Fetch partiel est utilisé.
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)

Utilisation du Fetch Partiel

La récupération en cours s'arrête dès que la fonction SQLFerme est appelée ou dès que la fenêtre contenant le champ Table est fermée.
Il est possible d'utiliser le Fetch Partiel sur plusieurs requêtes en même temps.
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBODBCConnecteurs Natifs (Accès Natifs)

Les différents types de requêtes

La fonction SQLTable permet d'associer à une table mémoire les requêtes créées avec la fonction SQLExec.
Pour associer à une table mémoire les requêtes créées sous l'éditeur de requêtes ou avec la fonction HExécuteRequêteSQL, utilisez la fonction FichierVersTableMémoire.
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxCode Utilisateur (MCU)ODBC

Récupération de rubriques de type Float sur Oracle (via ODBC)

Par défaut, le séparateur décimal utilisé pour les rubriques de type Float sur Oracle est le point. Or le driver ODBC renvoie la valeur avec en utilisant la virgule comme séparateur décimal. Lors de l'affectation de la valeur dans un champ de type numérique, les décimales sont perdues.
Pour éviter ce problème, il suffit de configurer le séparateur décimal pour la connexion en cours :
// Connexion à la base de données Oracle
SQLConnecte("MaBaseOracle", "User", "Passe", "", "ODBC")
// Requête pour changer le séparateur décimal
SQLExec("ALTER SESSION SET NLS_NUMERIC_CHARACTERS ='. '", "ReqTemp")
Composante : wd240obj.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Tabulation dans les colonnes
Attention aux caractères de tabulation dans vos requêtes SQL, ils mettent le bazar lors du remplissage de votre champ table.

Ex: SELECT 'a' + CHAR(9) + 'b'

Quand cette requête est exécutée dans votre SGBDR, le résultat est contenu dans une seule colonne, dans windev / webdev / windev mobile, si vos faites appel à SQLTable, le wlangage va considérer CHAR(9) comme séparateur de colonnes, du coup, le résultat sera répartie sur 2 colonnes, et non 1 seule
ROMULUS001
14 juin 2017