Access - Visma Integration utvecklarpaketet

  • 0
  • 1
  • Fråga
  • Uppdaterades för 5 år sedan
  • Besvarad
  • (Redigerad)
Finns det någon som har en enkel kod att dela med sig för att hämta från en accessdatabas och skicka vidare till visma? (C#, C++) Eftersom detta är något som kommer göras då och då behöver vi skapa ett program i visual studio till detta. Jag hade väldigt svårt att greppa helheten i de kodsnuttar som fanns i dokumentationen till utvecklarpaketet.
Foto på Web-IT

Web-IT

  • 186 poäng 100 badge 2x thumb

Publicerades för 7 år sedan

  • 0
  • 1
Foto på Anna Svensson

Anna Svensson, Content Producer - Löneområdet

  • 94,000 poäng 50k badge 2x thumb
Hej!

Vad är det för delar i dokumentationen som du fastnar på? Kanske kan vi hjälpa till att förtydliga någon del?
Foto på Web-IT

Web-IT

  • 186 poäng 100 badge 2x thumb
Vi försöker tex skapa en faktura. När vi har hjort headern och vill fylla på med fakturarader så kan vi inte klura ut hur vi ska fylla på fakturarader till headern vi just skapat. Vi vet ju inte vilket nummer headern fick samt hur man anger vilken header man skriver till när vi ska posta fakturarader.
Foto på Tobias Runesson

Tobias Runesson, Fd Testledare - Visma Lön

  • 5,996 poäng 5k badge 2x thumb
Hej!

Skapandet av rader till en faktura sker med funktionen AdkCreateDataRow. För att sedan koppla raderna till huvudet används funktionen AdkSetData. Om du vill skapa fakturahuvudet och raderna i samma add så behöver du inte veta fakturanumret utan de skapas i samma veva. Just denna bit beskrivs närmare på sidan 60 i referensmanualen.

I exempelprojektet som följer med utvecklarpaketet skapas fakturor, ta gärna en titt i hur den koden ser ut om du inte gjort det.

Att hämta ut fakturanumret på fakturan man nyss skapat går också. Det kan man göra med funktionen AdkGetStr i datastrukturen som man skapat fakturan ifrån.

Hjälper det dig på vägen?
Foto på Web-IT

Web-IT

  • 186 poäng 100 badge 2x thumb
Det hjälpte mig på vägen och jag lyckades skapa en faktura, dock så körde jag fast helt på att:

error = AdkNetWrapper.Api.AdkSetStr(pTempData, AdkNetWrapper.Api.ADK_OOI_ROW_ARTICLE_NUMBER, ref artNr);

nu ger mig:

Det gjordes ett försök att läsa eller skriva till skyddat minne. Detta indikerar ofta att annat minne är skadat.

Sedan jag bytte till den "riktiga" databasen
Foto på Web-IT

Web-IT

  • 186 poäng 100 badge 2x thumb
Det löste sig, tack för hjälpen!
Foto på Web-IT

Web-IT

  • 186 poäng 100 badge 2x thumb
Förresten, tror ni har fel i er manual,

pTempRow = AdkGetDataRow(pRowData, 2);
error = AdkSetStr(pTempRow, ADK_OOI_ROW_TYPE_OF_ROW, "T");

ger: Error 1 The best overloaded method match for 'AdkNetWrapper.Api.AdkSetStr(int, int, ref string)' has some invalid arguments
Foto på Roald Osbakk

Roald Osbakk, Systemarkitekt

  • 480 poäng 250 badge 2x thumb
Detta är ett utslag av lite språkförbistring ;-) Exemplen är skrivna i native C++, där man kan göra på detta sätt. Vill man testa koden får man översätta lite själv.
Nåt i stil med:
string tempString = "T";
error = AdkNetWrapper.Api.AdkSetStr(pTempRow, AdkNetWrapper.Api.ADK_OOI_ROW_TYPE_OF_ROW, ref tempString);

(sätt using AdkNetWrapper, så blir det inte så mycket att skriva)

I utvecklarpaketet finns exempelprojekt i C# som du kan titta på.
Foto på SEAPelle

SEAPelle

  • 124 poäng 100 badge 2x thumb
Jag har gjort en egen wrapper i NET som man enkelt kan plocka upp i Viisual studio.
Sen kör man klart enklare typ

i VB:
Dim MyInvoice As invoice = New invoice
Dim nyrad As invoicerow
MyInvoice.CustomerNumber = NyttNamn.Text
For i = 0 to antalraderduhar
nyrad = new invoicerow
nyrad.ArticleNumber = id1.Text
nyrad.ProfitCentre = Nothing
nyrad.Quantity2 = antal1.Text
MyInvoice.invoicerows.Add(nyrad)
Next
MyInvoice.Addinvoice()

I C#
invoice MyInvoice = new invoice();
invoicerow nyrad = default(invoicerow);
MyInvoice.CustomerNumber = NyttNamn.Text;
for (i = 0; i <= antalraderduhar; i++) {
nyrad = new invoicerow();
nyrad.ArticleNumber = id1.Text;
nyrad.ProfitCentre = null;
nyrad.Quantity2 = antal1.Text;
MyInvoice.invoicerows.Add(nyrad);
}
MyInvoice.Addinvoice();

Det underllättar så mycket att ha en mer korrekt NET-wrapper för oss som e vana med Visual studio.
Kontakta mig om ni önskar köpa wrappern.
Foto på Benny Olsson

Benny Olsson

  • 1,130 poäng 1k badge 2x thumb
Hej, 

Precis som SeaPelle så har även vi byggt en .Net wapper som täcker hela Vismas API. Att skapa en ny faktura, oavsett var rådatan kommer ifrån, är inte svårare än:

var invoice = new Invoice();invoice.CustomerNumber = myCustomerNumber;
for (var i=0;i<antalFakturarader;i++) {
  var row = new Invoice.Row();
  row.ArticleNumber = myRows[i].ArtNr;
  row.Quantity1 = myRows[i].Quantity;
  row.Quantity2 = myRows[i].Quantity;
  invoice.Rows.Add(row);
}
invoice.Save();

Svårare än så är det inte - och borde inte behöva vara.