jeudi 29 décembre 2016

Apprendre TSQL rapidement et gratuitement

Bonjour Geekettes et Geeks :)

Aujourd'hui et en fin d'année 2016 je voulais vous apporter un cadeau pour le nouvel an :
"Cours avancées Transact SQL"

Avant tout je vous donnes les définitions essentiels de ce langage:

Tout D'abord on connait presque tout SQL ( sigle de Structured Query Language, en français langage de requête structurée)

Voilà si j'ai une base de données et j'ai envie de récupérer une information données il faut que j'apprenne le langage de politesse pour récupérer mon information que je souhaite avoir :)
il faut que j'aurais comment écrire une requête ( SQL )

TSQL:


Transact SQL ou TSQL n'est que le langage SQL ( requêtes ) mais les transaction sont plutôt adapté avec les produits Microsoft comme le PLSQL ( pour Oracle)

J'ai trouvé parmi plusieurs site d'apprentissage du TSQL un site gratuit ( riche et bien structuré )

http://www.functionx.com/sqlserver/index.htm

Pour qui ceux qui préfère rester sur le standard il y a MSDN:

https://msdn.microsoft.com/en-us/library/ms189826.aspx

à la fin je en'ai qu'à  vous souhaite une bonne année pleine de bonne nouvelle et encore plus d'amour de prospérité, et richesses. Soyez en bonne santé mentale et physique ;) ...

mercredi 28 septembre 2016

How To Upload and Download Files with FTP from a VB.NET Application

In these days of Azure and The Cloud this post might seem to be a bit out of date, but if you want to access files on your web hosting service then here’s how you can do it with FTP.
Uploading Here’s a method that takes the four key pieces of information:
The name of the file to be uploaded
The web address of the ftp server on your web host
Your FTP username on your web host
The FTP Password
I’ve been surprised at how many examples only cover cases where Anonymous FTP is allowed.  I’m not sure that’s very realistic in a scenario where you are uploading your personal files.
Anyway, here’s the method that takes those four parameters:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19






    Private Sub FtpUploadFile(ByVal filetoupload As String, ByVal ftpuri As String, ByVal ftpusername As String, ByVal ftppassword As String)
        ' Create a web request that will be used to talk with the server and set the request method to upload a file by ftp.
        Dim ftpRequest As FtpWebRequest = CType(WebRequest.Create(ftpuri), FtpWebRequest)

        Try
            ftpRequest.Method = WebRequestMethods.Ftp.UploadFile

            ' Confirm the Network credentials based on the user name and password passed in.
            ftpRequest.Credentials = New NetworkCredential(ftpusername, ftppassword)

            ' Read into a Byte array the contents of the file to be uploaded 
            Dim bytes() As Byte = System.IO.File.ReadAllBytes(filetoupload)

            ' Transfer the byte array contents into the request stream, write and then close when done.
            ftpRequest.ContentLength = bytes.Length
            Using UploadStream As Stream = ftpRequest.GetRequestStream()
                UploadStream.Write(bytes, 0, bytes.Length)
                UploadStream.Close()
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Exit Sub
        End Try

        MessageBox.Show("Process Complete")
End Sub
As you can see from the comments, a WebRequest is created and the FTP UploadFile method is called.  Then the web credentials are passed in to be checked by the web host.  The contents of the file are read into a Byte Array and then streamed up to the server.  The Try Catch block is advisable to warn the user if something has gone wrong.  The final Message Box confirms that the process has completed, hopefully successfully.
When you create your method to call the method shown above, the only thing that might cause confusion is the ftpuri parameter.  This should in the following format:
     “ftp://www.yourwebsitename.com/yourfilename.fileextension”
Downloading The method for downloading is fairly similar:
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


    Private Sub FTPDownloadFile(ByVal downloadpath As String, ByVal ftpuri As String, ByVal ftpusername As String, ByVal ftppassword As String)
        'Create a WebClient.
        Dim request As New WebClient()

        ' Confirm the Network credentials based on the user name and password passed in.
        request.Credentials = New NetworkCredential(ftpusername, ftppassword)

        'Read the file data into a Byte array
        Dim bytes() As Byte = request.DownloadData(ftpuri)

        Try
            '  Create a FileStream to read the file into
            Dim DownloadStream As FileStream = IO.File.Create(downloadpath)
            '  Stream this data into the file
            DownloadStream.Write(bytes, 0, bytes.Length)
            '  Close the FileStream
            DownloadStream.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Exit Sub
        End Try

        MessageBox.Show("Process Complete")

    End Sub

vendredi 18 décembre 2015

Prompting for User Input in SAP Business One Queries

SAP Business One actually has some very slick functionality when it comes to queries. One of those pieces of extra SQL is prompting a user for input. We utilize these extensively in our business. It provides an excellent way to create SQL queries that anyone can use without knowledge of writing SQL query. We have even employed this technique  to completely rewrite the stock SAP Business One item and customer searches!

Prompting for User Input

Usually, when you are writing reports based on SQL in SAP Business One, you have to have a basic working knowledge of SQL to manipulate the data. Running a query without changing the SQL will always give the same result. I don't know about you, but I'd rather not have most users of SAP Business One learning SQL.
The answer to this problem is designing your queries in SAP Business One prompting for user input. This will give your users a way to affect the results of the query without learning how to code in SQL.
To prompt a user for input simply use [%0] in your query in place of hard coded choices. For example, if you had a query that found a business partner name from their card code like:
SELECT T0.[CardName] FROM OCRD T0 WHERE T0.[CardCode] = 'C20000'
The above SQL query will always return that one answer and is not very useful for anyone to use.
Change the query to use user input and we have ourselves a useful query that anyone with no skills in SQL can use, like this:
SELECT T0.[CardName] FROM OCRD T0 WHERE T0.[CardCode] = [%0]
User Prompt
User Prompt
When using prompts your user will see a box that is asking for what ever field coded as a prompt. It even includes the search "gray ball" to bring up a list of choices! This functionality is really great!
Go even further by applying wildcard searches to the query like this:
SELECT T0.[CardName] FROM OCRD T0 WHERE T0.[CardCode] LIKE '%[%0]%'
Don't forget the single quote 'tick' marks around the wildcard and prompt. This is perfect for filling the query with open ended or partial user responses. You can start to see how we employed this technique in recreating SAP item and customer searches. Apply the query to a FMS search and instruct users to click the magnifying glass to bring up the custom query.
A major thing to note that this is a specialized SAP Business One only tool. If you are using SQL Studio Management Studio to write your query then you will have to make sure to replace the user input prompts for testing. Feel free to copy and paste these queries into your own system to try them out! Experiment with different ways to impress your users with user input to utilize data in SAP Business One.

mercredi 2 septembre 2015

Comment : Sérialiser et désérialiser XML dans Visual Basic .NET



Référence: https://support.microsoft.com/fr-fr/kb/316730
Résumé
Cet article montre comment utiliser la classe System.XmlSerialization.XmlSerializer pour sérialiser et désérialiser un objet au langage XML (Extensible Markup).

back to the top

Configuration requise

La liste suivante met en évidence le matériel recommandé, les logiciels, l'infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Visual Studio .NET
Cet article suppose que vous maîtrisez les sujets suivants :
  • Microsoft Visual Basic .NET
  • XML
back to the top

Description de la sérialisation XML

La sérialisation est le processus par lequel vous stockez l'état d'un objet dans un flux de données. La sérialisation permet vous permet de faire persister l'état d'un objet afin que vous pouvez récupérer l'état ultérieurement. La sérialisation permet également de vous permet de cloner un objet existant pour créer un nouvel objet. L'espace de noms System.Xml.Serialization contient des classes que vous pouvez utiliser pour sérialiser des objets en XML.

back to the top

Créer l'Application Console dans Visual Basic .NET

Dans cette section, vous créez une application console qui :
  • Désérialise un objet en XML.
  • Enregistre la sérialisation XML dans un fichier texte.
  • Lit le fichier XML dans le fichier texte pour créer un nouvel objet (désérialisation).
  1. Suivez ces étapes pour créer une nouvelle application console dans Visual Basic .NET :
    1. Démarrez Visual Studio .NET.
    2. Dans le menu fichier , pointez sur Nouveau, puis cliquez sur projet.
    3. Dans la boîte de dialogue Nouveau projet , cliquez sur Projets Visual Basic sous Types de projets, puis cliquez sur Application Console sous modèles.
  2. Suivez ces étapes pour ajouter une nouvelle classe au projet :
    1. Dans le menu projet , cliquez sur Ajouter une classe.
    2. Dans la boîte de dialogue Ajouter un nouvel élément , tapez clsProduct.vb dans le texte du nom de zone, puis cliquez surOuvrir.
  3. Remplacez le code dans la fenêtre de code de clsProduct.vb par le code suivant :
    
    Public Class clsProduct
    
      Private mstrName As String
      Private mstrDescription As String
      Private mintQty As Integer
    
      Public Property Name() As String
        Get
          Name = mstrName
        End Get
        Set(ByVal Value As String)
          mstrName = Value
        End Set
      End Property
    
      Public Property Description() As String
        Get
          Description = mstrDescription
        End Get
        Set(ByVal Value As String)
          mstrDescription = Value
        End Set
      End Property
    
      Public Property Qty() As Integer
        Get
          Qty = mintQty
        End Get
        Set(ByVal Value As Integer)
          mintQty = Value
        End Set
      End Property
    
    End Class
          
    Ce code crée une classe de produit avec trois propriétés : nomDescriptionet Qty (quantité).
  4. Basculer vers la fenêtre de code de Module1.vb, puis ajoutez le code suivant en haut de la fenêtre de code :
    
    Imports System.IO
    Imports System.Xml.Serialization
         
  5. Dans la procédure Sub Main , ajoutez le code suivant pour créer et remplir une instance de la classe clsProduct :
    
        'Set up product object.
        Dim p As New clsProduct()
        p.Name = "Widget"
        p.Description = "Faster, better, cheaper"
        p.Qty = 5
         
  6. Utilisez l'objet XmlSerializer pour sérialiser l'objet au format XML et enregistrer l'état d'objet dans un fichier texte. Pour ce faire, ajoutez le code suivant immédiatement avant l'instruction End Sub de la procédure Sub Main :
    
        'Serialize object to a text file.
        Dim objStreamWriter As New StreamWriter("C:\Product.xml")
        Dim x As New XmlSerializer(p.GetType)
        x.Serialize(objStreamWriter, p)
        objStreamWriter.Close()
         
  7. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application.
  8. Ouvrez le fichier Product.xml dans le bloc-notes ou dans Microsoft Internet Explorer. Le contenu de ce fichier doit apparaître comme suit :
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Qty>5</Qty>
    </clsProduct>
          
  9. L'espace de noms Xml.Serialization permet de personnaliser les données générées par la classe XmlSerializer. Par exemple, dans la classe clsProduct , le champ Quantité est abrégé en tant que quantité Vous pouvez utiliser l'attribut XmlElementAttribute à modifier le champ de quantité lors de la sérialisation de la classe.

    Basculer vers la fenêtre de code pour clsProduct.vb, puis ajoutez le code suivant en haut de la fenêtre de code :
    
    Imports System.Xml.Serialization
         
  10. Recherchez la procédure de propriété Qtéet puis insérez le code suivant immédiatement avant l'instruction Public Qty() propriété As Integer :
    
    <XmlElementAttribute(ElementName:="Quantity")> _
         
  11. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application.
  12. Ouvrez le fichier Product.xml dans le bloc-notes ou dans Internet Explorer. Le contenu de ce fichier doit se présente comme suit :
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Quantity>5</Quantity>
    </clsProduct>
           
    Notez que l'élément Qté modifiée en quantité.
  13. Basculer vers la fenêtre de code de Module1.vb, puis ajoutez le code suivant à la procédure Sub Main immédiatement avant l'instruction End Sub :
    
        'Deserialize text file to a new object.
        Dim objStreamReader As New StreamReader("C:\Product.xml")
        Dim p2 As New clsProduct()
        p2 = x.Deserialize(objStreamReader)
        objStreamReader.Close()
    
        'Display property values of the new product object.
        Console.WriteLine(p2.Name)
        Console.WriteLine(p2.Description)
        Console.WriteLine(CStr(p2.Qty))
        Console.ReadLine()
          
    Ce code désérialise le fichier Product.xml texte pour créer un nouvel objet clsProduct nommé p2. En outre, ce code affiche les valeurs de propriété de p2 dans la fenêtre de Console.
back to the top

Vérifiez qu'il fonctionne

Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application. Notez que les valeurs de propriété de p2 apparaissent dans la fenêtre de Console :
Widget
Faster, better, cheaper
5
     
back to the top

Listing complet du Code


'Module1.vb
Imports System.Xml.Serialization
Imports System.IO

Module Module1

  Sub Main()
    
    'Set up product object.
    Dim p As New clsProduct()
    p.Name = "Widget"
    p.Description = "Faster, better, cheaper"
    p.Qty = 5

    'Serialize object to a text file.
    Dim objStreamWriter As New StreamWriter("C:\Product.xml")
    Dim x As New XmlSerializer(p.GetType)
    x.Serialize(objStreamWriter, p)
    objStreamWriter.Close()

    'Deserialize text file to a new object.
    Dim objStreamReader As New StreamReader("C:\Product.xml")
    Dim p2 As New clsProduct()
    p2 = x.Deserialize(objStreamReader)
    objStreamReader.Close()

    'Display property values of the new product object.
    Console.WriteLine(p2.Name)
    Console.WriteLine(p2.Description)
    Console.WriteLine(CStr(p2.Qty))
    Console.ReadLine()

  End Sub

End Module

'clsProduct.vb
Imports System.Xml.Serialization

Public Class clsProduct

  Private mstrName As String
  Private mstrDescription As String
  Private mintQty As Integer

  Public Property Name() As String
    Get
      Name = mstrName
    End Get
    Set(ByVal Value As String)
      mstrName = Value
    End Set
  End Property

  Public Property Description() As String
    Get
      Description = mstrDescription
    End Get
    Set(ByVal Value As String)
      mstrDescription = Value
    End Set
  End Property

  <XmlElementAttribute(ElementName:="Quantity")> _
  Public Property Qty() As Integer
    Get
      Qty = mintQty
    End Get
    Set(ByVal Value As Integer)
      mintQty = Value
    End Set
  End Property

End Class
    
back to the top
Références
Pour plus d'informations, reportez-vous aux sites Web Microsoft suivants : back to the top

Avertissement : Cet article a été traduit de manière automatique

Propriétés
ID d'article : 316730 - Dernière mise à jour : 11/23/2013 11:50:00 - Révision : 7.0
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • kbhowtomaster kbmt KB316730 KbMtfr

mercredi 15 avril 2015

Report Writer SAP

Utilisation du Report Writer 
Applications
Ce processus décrit les principales étapes de création d’un état Report Writer.
Déroulement
Le graphique suivant propose un exemple d’état. Les centres de coûts et les comptes sont repris dans les lignes de l’état et les types de devise (devise interne et devise du groupe) sont répertoriés dans les colonnes.

Ce graphique est expliqué dans le texte afférent
Vous pouvez définir l’état ci-dessus en passant par les étapes suivantes :
  1. Créez des sets pour les lignes et les colonnes de l’état et des sets pour sélectionner les données destinées à l’état.
Les sets vous permettent de déterminer les données qui apparaissent dans les lignes et les colonnes de l’état, ainsi que les données sélectionnées pour l’état.
Note
·
Vous pouvez utiliser un set en tant que ligne, colonne ou critère de sélection suivant la manière dont vous voulez présenter les données dans l’état. De même, puisque le même set peut être utilisé dans un grand nombre d’états différents, il est inutile de créer un nouveau set à chaque fois que vous définissez un état. Il vous suffit d’utiliser des sets existants qui correspondent à vos besoins en matière de reporting.
·
Vous devez utiliser certaines caractéristiques de set dans un état. Vous devez utiliser des sets contenant des valeurs pour les caractéristiques « Ledger », « Société », « Version », « Période » et « Type d’enregistrement » dans les lignes de l’état, les colonnes de l’état ou comme critères de sélection de données.
Sets pour lignes d’état :
Le set que vous utilisez dans une ligne d’état est désigné sous le nom de bloc de lignes et peut être constitué de plusieurs lignes physiques. Dans l’état ci-dessus, le set TD-CC-CPTE est utilisé comme bloc de lignes. Il comprend les sets suivants :
  • TD-RCNTR-12
Ce set de base contient les centres de coûts 100 et 200.
  • TD-RCPTE-PC
Ce set unidimensionnel contient les sets de base TD-RCPTE-PRO (avec les comptes de produit 4000010 et 4000020) et TD-RCPTE-CHG (avec les comptes de charges 3000010 et 3000020).
Sets pour colonnes d’état :
Le set que vous utilisez dans une colonne d’état est désigné sous le nom de bloc de colonnes et peut comprendre plusieurs colonnes physiques.
Dans l’état ci-dessus, le set de colonnes, ou bloc de colonnes, est TD-REL-TL (données réelles exprimées en devise interne et en devise du groupe). Ce set de données contient les valeurs suivantes :
– HSL-0 (devise interne, données réelles)
– KSL-0 (devise du groupe, données réelles)
Le Report Writer crée une colonne physique pour chaque valeur figurant dans le set.
Sets utilisés comme critères généraux de sélection des données de l’état :
Créez également des sets pour définir les données sélectionnées pour un état.
Exemple
Créez un set doté de la caractéristique « Exercice » comprenant la valeur 2001. Si vous employez ce set en tant que critère de sélection dans un état, le Report Writer n’extrait que les données portant sur 2001.
Pour plus d’informations sur l’utilisation des sets pour le Report Writer, voir
Utilisations des sets dans le Report Writer.
  1. Sélectionnez une bibliothèque pour l’état.
  2. Avant de définir concrètement l’état, vous devez sélectionner une bibliothèque pour l’état. Une bibliothèque est un ensemble de caractéristiques (telles que « compte », « centre de coûts », « société S/L »), de ratios de base (tels que les coûts internes, les coûts totaux et la quantité d’activité) et de ratios (telles que les coûts réels dans l’exercice en cours) utilisés dans une définition d’état. Les définitions des états d’une bibliothèque ne peuvent utiliser que les caractéristiques, les ratios de base et les ratios définis pour cette bibliothèque.
    Pour plus d’informations, voir
Bibliothèque.
  • Définissez l’état.
  • a) Définissez les lignes de l’état.
    À l’écran Créer état : lignes, saisissez le(s) set(s) que vous voulez inclure dans le(s) bloc(s) de lignes de l’état. Le set que vous sélectionnez détermine les postes de ligne qui figurent dans l’état. Vous pouvez également saisir un texte supplémentaire pour définir votre propre intitulé pour la colonne directrice ou le total global, au lieu d’utiliser le texte figurant dans l’en-tête du set. Vous pouvez également définir des formules et des ratios dans un bloc de lignes.
    b) Définissez les colonnes de l’état.
    À l’écran Créer état : colonnes, saisissez le(s) set(s) que vous voulez inclure dans le(s) bloc(s) de colonnes de l’état. Le set que vous sélectionnez détermine les colonnes qui figurent dans l’état. Vous pouvez également saisir un texte supplémentaire pour définir votre propre intitulé pour la colonne directrice ou le total global, au lieu d’utiliser le texte figurant dans l’en-tête du set.
    c) Saisissez les sets à utiliser comme critères de sélection pour sélectionner les données de l’état.
    À l’écran Créer état : sélections génér., saisissez le(s) set(s) à utiliser pour la sélection des données de l’état. Vous pouvez également saisir une règle de sélection pour définir davantage les critères de sélection.
    d) Saisissez le texte de l’état, si nécessaire.
    Vous pouvez saisir les textes de l’état à l’écran Créer état : désign. Vous pouvez saisir les textes de la page de garde, des en-têtes, des pieds de page et de la dernière page de votre état. Il vous est en outre possible de saisir un texte particulier que le système utilisera lors de l’exportation de l’état vers Microsoft Excel. Vous pouvez également saisir diverses variables de texte telles que la date et le nom de l’utilisateur, qui apparaissent lorsque l’état est édité.
    e) Examinez la mise en page par défaut et modifiez-la si nécessaire.
    Le système SAP vous fournit une mise en page standard par défaut pour tous vos états. Les mises en page standard déterminent la mise en page et le format numérique des données de l’état. Si vous utilisez des paramètres par défaut, vous pouvez passer cette étape. Si vous désirez modifier certains paramètres, utilisez les écransCréer/Modifier mise en page standard.
    Pour plus d’informations sur la création des mises en page standard, voir
    Mises en page standard.
    Pour plus d’informations sur la modification des paramètres par défaut pour un état donné, voir
    Définition des mises en page d’état.
    Pour plus d’informations sur la définition des états, voir
    États Report Writer.
  • Vérifiez l’état.
  • Une fois la définition de l’état achevée, vous devez contrôler s’il n’y a pas d’erreur dans l’état. La fonction Etat
    ® Vérifier appelle la liste de tous les messages d’erreur et d’avertissement associés à la production de l’état.
  • Affectez l’état à un groupe d’états.
  • Après avoir défini un état, affectez-le à un groupe d’états. Celui-ci peut comprendre un ou plusieurs états de la même bibliothèque. Lorsque des états contiennent les mêmes caractéristiques et qu’ils partagent les mêmes données, la sélection des données et le temps de traitement sont plus rapides du fait que les données ne sont sélectionnées qu’une seule fois.
    Pour plus d’informations, voir Groupes d’états.
  • Générez un groupe d’états.
  • Au cours de cette étape, le Report Writer génère les programmes nécessaires au traitement des états.
    Pour plus d’informations, voir Création d’un groupe d’états.
  • Exécutez le groupe d’états.

  • Dans cette étape, le Report Writer sélectionne tous les enregistrements de base de données utilisés dans l’état et les édite au format défini.
    Source: http://help.sap.com/saphelp_470/helpdata/fr/5b/d22bed43c611d182b30000e829fbfe/content.htm