Het maken van een prijslijst in Excel die prijswijzigingen upload

Met behulp van Invantive Control voor Excel ben ik bezig om prijslijsten te importeren waarin ook wijzigingen gemaakt kunnen worden. Het downloaden van de prijslijsten uit Exact gaat met de onderstaande code goed, maar bij het uploaden krijg ik een error dat de primary key column niet is toegewezen.

Ik heb in Formaatvrije SQL de volgende code:

select sip.ID
,      sip.AccountName
,      itm.ItemGroupCode
,      itm.ItemGroupDescription
,      sip.ItemCode
,      sip.NumberOfItemsPerUnit
,      sip.DefaultItemUnit
,      sip.Unit
,      sip.UnitDescription
,      sip.Price
,      sip.Currency
,      itw.WarehouseDescription
,      sip.Price
,      sip.StartDate
from   ExactOnlineREST..SalesItemPrices sip
join   ExactOnlineREST..ItemWarehouses itw
on     sip.ItemCode = itw.ItemCode
join   ExactOnlineREST..Items itm
on     sip.ItemCode = itm.Code
where  itm.ItemGroupCode = 100
and    sip.UnitDescription = "coil"
and    not itw.WarehouseCode = "999 NIET!!"

Waarbij sip.ID het unieke ID is en dus ook de primaire sleutel moet zijn. De SQL code PRIMARY KEY (sip.ID) had ik ook geprobeerd maar dat lijkt niet herkend te worden.

Kan iemand mij adviseren hoe ik dit kan aanpakken?

Alvast bedankt voor het meedenken!

De SQL code primary key(NAAM) wordt niet ondersteund qua syntax. Op SalesItemPrices is wijzigen mogelijk: insert, update en delete.

Algemene tips:

  • Gebruik bij voorkeur als standaard niet de dubbele quotes maar de enkele voor tekstconstanten.
  • Gebruik geen numerieke waarde 100 in combinatie met de impliciete datatypeconversie, maar gebruik de tekstconstante ‘100’ zodat de SQL engine eventueel automatisch een filter kan meesturen naar Exact Online.
  • Verplaats de where-clause elementen op itm.ItemGroupCode en itw.WarehouseCode naar de filters bij de juiste join. Dit verhoogt de prestaties en geeft in combinatie met left outer join ook een correct antwoord.

Als er alleen sprake is van prijzen muteren, dan kan volstaan worden als het goed is met een download query, aanvinken van bijwerken en het opgeven van de primaire sleutel. Zorg dat alleen de gewenst wijzigbare velden bijgewerkt kunnen worden, dit is een eigenschap van elk veld.

Download vervolgens de gegevens, muteer ze (het winkelwagentje rechtsboven geeft vulling aan) en synchroniseer de resultaten terug.

Verwijderen gaat vergelijkbaar.

Toevoegen is complexer, zeker op Exact Online. Hiervoor is mogelijk ook in Invantive Control for Excel een on-insert trigger nodig met SQL / PSQL code.

Tenslotte is er nog een alternatief binnen Get My Report, zie Upload Item Price Updates. Deze is voor artikelaantallen tot pakweg 250.000 geschikt. Voor hogere volumes is maatwerk nodig.

Lukt het zo?