PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Syntaxe de déclaration : Remarques
  • Code SQL de la requête
  • Contexte HFSQL
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
Le type "Requête SQL" permet d'écrire une requête SQL directement dans le code WLangage. La requête SQL est définie et déclarée. Elle peut ensuite être exécutée par la fonction HExécuteRequête ou la fonction HExécuteRequêteSQL.
L'utilisation du type "Requête SQL" permet de profiter de nombreux avantages :
  • Coloration automatique du code SQL sous l'éditeur,
  • Assistance à la saisie de code SQL,
  • Assistance à la saisie sur les rubriques résultat et les paramètres de la requête,
  • Erreurs de compilation :
    • en cas d'erreur dans le code SQL
    • en cas d'utilisation d'une rubrique de sortie inexistante.
  • Databinding sur la requête si elle est déclarée comme globale à une fenêtre,
  • Libération automatique en fin de portée de la variable.
Exemple
reqStatVols est une Requête SQL =
[
SELECT * FROM  Vols
WHERE Vols.IDAéroportDépart = {ParamIDAéroportDépart}
AND Vols.IDAéroportArrivée = {ParamIDAéroportArrivée}
]
reqStatVols.ParamIDAéroportDépart = 12
reqStatVols.ParamIDAéroportArrivée = 3

HExécuteRequête(reqStatVols)
POUR TOUT reqStatVols
...
FIN
Syntaxe

Déclarer une requête SQL Masquer les détails

<Nom Requête SQL> est une Requête SQL =
[    
   <Code SQL de la requête>
]
<Nom Requête SQL> :
Nom de la variable correspondant à la requête SQL.
<Code SQL de la requête> :
Code SQL correspondant à la requête SQL associé à la variable.
Remarques

Syntaxe de déclaration : Remarques

  • La requête doit être définie dès sa déclaration. Il n'est pas possible de déclarer une variable de type Requête SQL puis de saisir le code SQL correspondant après quelques lignes de code.
  • Les fichiers de données utilisés dans le FROM de la requête doivent être déclarés dans l'analyse du projet. Ils ne peuvent pas provenir de sources de données initialisées par un alias, une déclaration externe ou une autre requête.
  • La requête SQL ne peut pas être construite avec des concaténations de chaînes. Pour construire une requête par concaténations de chaînes, il faut utiliser la fonction HExécuteRequêteSQL.
  • La requête SQL n'est pas exécutée lors de sa déclaration. Il est nécessaire de l'exécuter à l'aide de la fonction HExécuteRequête ou de la fonction HExécuteRequêteSQL.
  • Lorsque la requête est déclarée et exécutée, elle peut être manipulée par toutes les fonctions HFSQL qui manipulent des requêtes.
  • Lorsque la requête SQL est déclarée et exécutée, elle peut être utilisée dans une autre requête SQL en utilisant le nom de la variable correspondante :
    MonInterrogation est une Requête SQL =
    [
    SELECT * FROM CLIENT
    ]
    HExécuteRequête(MonInterrogation)

    AutreInterrogation est une chaîne = "SELECT * FROM %1"
    AutreInterrogation = ChaîneConstruit(AutreInterrogation, MonInterrogation..Nom)

    ReqAvecMonInterrogation est une Source de Données
    HExécuteRequêteSQL(ReqAvecMonInterrogation, AutreInterrogation)

Code SQL de la requête

  • Le code SQL saisi bénéficie de la coloration syntaxique. Les mots-clés du SQL sont colorés (voir exemple).
  • Complétion : La complétion est disponible :
    • sur les mots-clés SQL,
    • sur les rubriques et les fichiers de données,
    • sur les rubriques de sortie de la requête.
      La saisie SQL assistée
      La saisie SQL assistée
  • Erreurs de compilation : En cas d'erreur dans le code SQL de la requête, une erreur de compilation est générée (comme pour du code WLangage).
    Erreur de code SQL détectée en saisie
    Erreur de code SQL détectée en saisie
  • De la même manière que dans une requête SQL saisie sous l'éditeur de requêtes, il est possible de :
    • saisir des commentaires en les faisant précéder des caractères "--" ou "//".
    • saisir des fonctions WLangage. Il suffit de préfixer les fonctions WLangage utilisées par les lettres "WL.". La saisie assistée est disponible.
      AndroidWidget AndroidJava Il n'est pas possible d'exécuter des requêtes SQL contenant des fonctions WLangage.
    • ...

Contexte HFSQL

  • Une requête SQL est définie dans le contexte HFSQL courant. Dans une fenêtre à contexte HFSQL indépendant, une requête SQL peut ne pas exister.
  • Une requête SQL peut être définie comme une variable globale. Dans ce cas, il est nécessaire de faire attention aux contextes HFSQL.
Version minimum requise
  • Version 23
Documentation également disponible pour…
Commentaires
PRIMEIRO EXEMPLO SQLQUERY
https://youtu.be/83za4WHGn2g

http://windevdesenvolvimento.blogspot.com.br/2018/05/dicas-1759-publica-windev-novidade23-10.html

https://groups.google.com/d/forum/amarildowindev

// EXEMPLO

sql is SQL Query =
[
SELECT
cliente.clienteid,cliente.nome,
FROM cliente
ORDER BY cliente.nome
]

HExecuteQuery(_sql)

FOR EACH _sql
TableAddLine(TABLE_clientes,_sql.nome,_sql.clienteid)
END



De matos
29 mai 2018
CODIGO EXEMPLO
// ANTES DE ALTERARMOS O CODIGO, VAMOS ELIMINAR OS DADOS DA TABELA
// BEFORE WE ALTER THE CODE, LET'S DELETE THE TABLE DATA
// AVANT DE MODIFIER LE CODE, SUPPRIMONS LES DONNÉES DE TABLE
TableDeleteAll(TABLE_CLIENTES)
// VAMOS AGORA COLOCAR UMA CONDIÇAO PROCURANDO UM NOME
// LET'S PUT A CONDITION LOOKING FOR A NAME NOW
// Mettons une condition à la recherche d'un nom maintenant
_SQL is SQL Query =
[
SELECT
cliente.clienteid,cliente.nome
FROM
cliente
WHERE cliente.nome = {parametro_nome}
ORDER BY cliente.nome
]
// VAMOS PERGUNTAR SE NOME ESTÁ EM BRANCO, SE FOR, DEIXAR NULL
// LET'S ASK IF NAME IS BLANK, IF SO, LEAVE NULL
// DEMANDONS SI LE NOM EST BLANC, SI CELA, LAISSER NUL
IF EDT_NOME="" THEN
_SQL.parametro_nome=Null
ELSE
_SQL.parametro_nome=EDT_NOME
END
HExecuteQuery(_SQL)
FOR EACH _SQL
TableAddLine(TABLE_CLIENTES,_SQL.clienteid,_SQL.nome)
END

De matos
20 mai 2018
Fonctionne pas sur Android
sur Windev Mobile en mode simulateur ca fonctionne mais pas en mode Android
Philippe LECLERCQ
17 avr. 2018