Bundelinstellingen van het type “Lijst”

0000002759     -      13-06-2022

Mercator maakt het opzetten van bundles van het type “Lijst” (ListView) mogelijk voor MercatorPenguin. Deze instelling kan verschillende stappen bevatten. Hierdoor kan de gebruiker bijvoorbeeld de details van een record uit de vorige stap verkrijgen. Dit type bundel kan 9 stappen bevatten. Elke stap genereert een lijstweergave.

 

Eerste stappen

In de eerste stap moet de instelling drie elementen bevatten:

  • 1. De XAML-definitie van het formulier voor de selectie van de zoekparameters. Dit formulier wordt bovenaan het scherm weergegeven.
  • 2. Een SQL-query die de parameters gebruikt die in het bovenstaande formulier werden ingegeven.
  • 3. De XAML-definitie van een cel in de ListView die onderaan het formulier wordt weergegeven.

 

1. XAML Opzoeking

Dit veld moet een geldige XAML-code bevatten. Containers en controls die aangeboden worden door Xamarin Forms kunnen vrij gebruikt worden.

Het zoekveld moet een van volgende types zijn:

  • m:SearchEntry: Invoer (tekstvak met één regel) voor de associatie met een SQL-parameter
  • m:SearchDatePicker: idem voor de DatePicker (datum selectie)
  • m:SearchSwitch: idem voor een Switch (True/False)
  • m:SearchPicker: idem voor een picker (equivalent van een dropdown)

Voor alle gebieden hierboven moet de property SqlParam vervolledigd worden met de naam van de SQL-parameter die gebruikt zal worden in de query in stap 2.

De XAML code moet ook één, en slechts één knop van het type m:SearchButton bevatten, de SearchButton die de zoekopdracht activeert.


Speciale gevallen:

Indien de zoekopdracht geen parameters gebruikt (geen SearchEntry, SearchDatePicker,..) kunnen we een onzichtbare SearchButton gebruiken. In dit geval moet de opzoeking direct uitgevoerd worden door MercatorPenguin, zonder tussenkomst van de gebruiker. De XAML-code moet dus als volgt zijn:

<m:SearchButton IsVisible="False" />

Als u wilt dat de validatie van een SearchEntry de zoekopdracht direct veroorzaakt, moet u deze eigenschap toevoegen:

<m:SearchEntry Placeholder="Barcode" SqlParam="@barcode" SearchWhenCompleted="True" />

Het is mogelijk om het gebied in te stellen dat de focus moet krijgen bij het openen van het scherm via de FirstFocus eigenschap:

<m:SearchEntry FirstFocus="true" 

Net als bij Mercator Desktop is het mogelijk om waarden eenvoudig over te dragen van een gebied naar eenandere. Dit wordt gedaan door een TransferValue toe te voegen tussen twee zones van hetzelfde type. Deze twee gebieden moeten worden geïdentificeerd aan de hand van de eigenschappen SqlParamLeft en SqlParamRight. Dit object wordt gematerialiseerd door een pijl naar rechts wanneer de control aan de linkerkant de focus heeft en door een pijl naar links wanneer de rechter de focus heeft..

<m:SearchEntry Placeholder="N° min" Keyboard="Numeric" WidthRequest="120" BackgroundColor="White" TextColor="Black" SqlParam="@piece1" />
<m:TransferValue SqlParamLeft="@piece1" SqlParamRight="@piece2" />
<m:SearchEntry Placeholder="N° max" Keyboard="Numeric" WidthRequest="120" BackgroundColor="White" TextColor="Black" SqlParam="@piece2" />

TranferValue


In dit gebied is het mogelijk om te verwijzen naar een SearchDatesHelper. Net als in Mercator kan u met dit object één enkele datum of een bereik selecteren (gisteren, week, huidige maand,…). Deze controle bevat twee eigenschappen: SqlParamDate1 en SqlParamDate2, waarvan

  • beide ingevuld worden met de naam van de SQL-parameter waarop ze betrekking hebben. In dit geval kan een datumbereik gebruikt worden.
  • Alleen SqlParamDate1 ingevuld is, in dit geval kunt u één datum invoeren.

Voorbeeld van gebruik:

<m:SearchDatesHelper SqlParamDate1="@date_1" SqlParamDate2="@date_2" HorizontalOptions="Center" BackgroundColor="Orange" />

SearchDatesHelper_nl

 

Het is ook mogelijk om te verwijzen naar een SearchScanButton. Hiermee kunt u uw mobiele camera gebruiken als barcodelezer. Deze knop moet aan een SearchEntry gekoppeld zijn om het resultaat van de scan weer te geven. Dit wordt gedaan via de property SqlParamKey.

Voorbeeld:

<m:SearchScanButton SqlParamKey="@key" />

scanbutton_nl

 

Betreffende SearchPickers: deze control heeft de bijzonderheid dat een lijst met elementen vereist is. Deze lijst kan gedefinieerd worden in de XAML-code, of via SQL query, of via Mercator.

Voorbeeld van een lijst in XAML-code

<m:SearchPicker BackgroundColor="White" TextColor="Black" SqlParam="@n" HorizontalOptions="FillAndExpand">
  <Picker.ItemsSource>
    <x:Array Type="{x:Type x:String}">
      <x:String>1</x:String>
      <x:String>2</x:String>
      <x:String>3</x:String>
    </x:Array>
  </Picker.ItemsSource>
</m:SearchPicker>

 

Voorbeeld met een SQL query

 

<m:SearchPicker ReqSql="select nom from CAT_STCK where type=1 order by nom" 
SqlParam="@cat1" BackgroundColor="White" TextColor="Black" HorizontalOptions="FillAndExpand" />

Dit wordt gedaan via de eigenschap ReqSql. Deze SQL-query moet een enkele tabel genereren die bevat:

  • een enkele kolom van het type string
  • twee kolommen van het type string waarvan de eerste het weer te geven element bevat, de tweede kolom bevat het ID uit de database

We vestigen uw aandacht op het feit dat het aantal rijen dat naar de picker gestuurd moet worden redelijk moet blijven.

 

Voorbeeld waarbij een lijst dynamisch gegenereerd wordt door Mercator

<m:SearchPicker MercatorItemsSource="Exercices" SqlParam="@num_ex" 
BackgroundColor="White" TextColor="Black" HorizontalOptions="FillAndExpand" />

La propriété MercatorItemsSource peut contenir une de ces valeurs :

  • Exercices: de boekjaren van de boekhouding (visible = Lib, valeur = num tinyint)
  • Periodes: de periodes van de boekhouding (visible = Lib + Lib exercice, valeur = num char(6))
  • Magasins: de depots (visible = Nom, valeur = Id char(10))
  • Reps: de vertegenwoordigers (visible = Nom, valeur = Id char(10))
  • AnaPlans: analytische plannen (visible = Libellé, valeur = numéro du plan tinyint)
  • Rayons: de rayons (visible = Nom, valeur = Id char(10))
  • Familles: de families (visible = Nom, valeur = Id char(10))
  • SsFamilles: de subfamilies  (visible = Nom, valeur = Id char(10))
  • Users: de gebruikers  (visible = Nom, valeur = Id char(10)).

De lijsten worden tijdens het lezen van de bundels in de mobiele telefoon geïmporteerd. Om de nieuwste versie van deze lijsten te verkrijgen, trek je de lijst naar beneden (=PULL DOWN)

Het is eveneens mogelijk om het standaard te tonen element vast te leggen.

 

2. SQL-query

Dit veld wordt gebruikt om een SQL-query of script bij te houden. De query kan slechts één tabel retourneren (of 2 tabellen als een SubCellView wordt gebruikt). Men moet ervoor zorgen dat de hoeveelheid gegevens die teruggestuurd worden niet te groot is. (Zowel het aantal rijen, als aantal kolommen.)

Gegevens opmaken : deze pagina zien.

De SQL-query moet de SQL-parameters gebruiken die door het formulier zijn doorgegeven (punt 1).

Bovendien wordt de parameter @ID_USER(char10), met hierin het id van de gebruiker, altijd meegegeven aan de query.

De eerste kolom die teruggestuurd wordt, wordt beschouwd als de titel van het record. Deze titel wordt in de volgende stap weergegeven.

 

3. XAML ListViewCell

Dit veld moet geldige XAML-code bevatten. Het moet de inhoud van een enkele cel van de ListView definiëren die door MercatorPenguin zal worden weergegeven. In dit gebied kunnen alle properties van de controls automatisch worden overschreven door de inhoud van de query uit de vorige stap. Hiervoor moet u een @ tussen aanhalingstekens plaatsen, gevolgd door de kolomnaam in HOOFDLETTERS.

Bijvoorbeeld, de property Text:

<Label Text="@S_CLE1" Font="Small" />

 

Afgezien van de standaard controls van Xamarin Forms, is het ook mogelijk om controls van MercatorPenguin te gebruiken.

 phoneButton_nl PhoneButton

Deze knop laat toe om een telefoonnummer op te bellen vanop je mobiel. De eigenschap tekst wordt gebruikt. Niet strikt numerieke tekens worden genegeerd. Het +-teken wordt automatisch vervangen door 00.

<m:PhoneButton Text="@C_NUM_TEL" Font="Small" />

 

emailButton_nl EmailButton

Deze knop wordt gebruikt om een email te starten via de standaard mailapplicatie. De ontvanger van de inhoud is de tekst-property van het besturingselement. Deze knop is enkel actief indien deze een geldig emailadres bevat.

<m:EmailButton Text="@C_EMAIL" Font="Small" />

 

mapButton_nl MapButton

Deze knop laat toe om de standaard kaarttoepassing op te starten, waarbij het adres uit de property Address wordt weergegeven op de kaart. Dit adres moet zo volledig mogelijk zijn om de geolocatie mogelijk te maken. In de SQL-query zullen we dit als volgt aangeven: rtrim(rtrim(c_adresse)+' '+rtrim(c_adresse2)+' '+rtrim(c_codep) + ' ' + rtrim(c_ville)+ ' '+rtrim(c_pays)) as adresse

<m:MapButton Address="@ADRESSE" Font="Small" />

 

filebutton_nl FileButton

Deze knop wordt gebruikt om een PDF-bestand te bekijken dat is opgeslagen in de Mercator SQL-database. Dit maakt het mogelijk om PDF-bestanden weer te geven uit het commercieel beheer of bestanden die aan een informatiebestand gekoppeld zijn. De property File van de knop moet het pad naar het bestand bevatten. (bijvoorbeeld: <repdata\dir\monfichier.pdf).< p=""> </repdata\dir\monfichier.pdf).<>

<m:FileButton Text="@LIB" File="@PDF" Font="Small" />

 

Het is ook mogelijk om afbeeldingen uit de Mercator-database weer te geven.


Stap 2 en volgende

In deze stappen moet de configuratie 2 elementen bevatten:

  • 1. Een SQL-query die als SQL-Parameter de waarden gebruikt van een record dat eerder geselecteerd werd.
  • 2. De XAML definitie van een cel die in de ListView wordt weergegeven.

 

1. SQL-query

De query is opgebouwd volgens de zelfde principes uit stap 1. Het enige verschil is dat de SQL-parameters waarmee men rekening moet houden overeenkomen met de kolomnamen die geretourneerd worden door de Query die in de vorige stap gedefinieerd werd..

Het is niet mogelijk om te beschikken over SQL-parameters die overeenkomen met een parameter uit een zoekformulier, of een eerdere stap. Indien nodig moet er een SQL-parameter uit een vorige stap toegevoegd worden aan de SQL-query, waarvan de naam gelijk is aan een kolom uit de SELECT. Zodat men over de gewenste informatie kan beschikken.

Bijvoorbeeld om de aanvankelijk ingevoerde datums te kennen:

select ... @date_1 as date_1,@date_2 as date_2

 

2. XAML ListViewCell

Dit gebied moet geldige XAML-code bevatten, die precies is samengesteld zoals in punt 3 van stap 1. De waarden die moeten worden opgegeven in de properties moeten tussen aanhalingstekens geplaatst worden. Voorafgegaan door een @-teken, dat gevolgd wordt door de kolomnaam in hoofdletters, de kolomnaam moet overeenkomen met een veld dat geretourneerd werd door de SQL-query in stap 1.

 


 

Enkele voorbeelden :