Är det någon som har använt SPCS API med .NET. Hej! Jag har precis löst det. Hej Olle, Här är lite kod som jag använder för att hämta strukturer det är ungerfär det som finns i utvecklar biblioteket men med vissa modifieringar. Jag har gjort en dll som sköter all hantering mellan SPCS och mitt program så jag slipper använda APIet i programmet. Har du eller någon annan löst hur man plockar ut error meddelanden via denna? har ett litet consol program som pratar med spcs api. då api:et returnerar ett fel vägrar consolen att avsluta. Jag har sett liknande fenomen om AdkOpen returnerar fel (t.ex. inga tillgängliga licenser). Aj då, illa att höra. Något tips på hur kan man ta död på consollen i programkod? mitt program är schemalagt att köra några gånger per dag och jag vill inte drabbas av att 10 consoller ligger öppna System.Diagnostics.Process.GetCurrentProcess().Kill()SPCS API
Ha en del problem som jag skulle vilja diskutera!Sv: SPCS API
Har gjort några applikationer med spcs api men inte provat net.
Vad är problemet?
/patrikSv:SPCS API
AdkGetStr(pData, ADK_CUSTOMER_NAME, Temp, 50)
Jag glömde att Temp måste ju vara 50 tecken långt för att det ska funka. Jag fick ju bara ut så många tecken som Temp var när jag anropade.Sv: SPCS API
Jag försöker att använda SPCS C++ API från C#, har du lite glue kod som du kan dela med dig av? Jag har just nu problem med strukturpekaren som returneras från AdkCreateData
Mvh,
MartinSv:SPCS API
Hoppas detta kan hjälpa dig.
<code>
Public Function GetArticles() As ArticleCollection
Static SPCSError As ADKERROR
Dim Temp As String
Dim bTemp As Boolean
Dim nTemp As Double
Dim pData As Integer
Dim iAdmSize As Integer
Dim dummy As String
Dim returnArticles As New ArticleCollection
SPCSError = AdkGetAdmSize(iAdmSize, dummy, 0)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
End If
Temp = Space(50)
pData = AdkCreateData(ADK_DB_ARTICLE) ' skapar en ADK_DB_ARTICLE struktur
SPCSError = AdkSetSortOrder(pData, SPCSapi.ADK_SORT_ORDER.eArticleGroup)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
End If
SPCSError = AdkSetStr(pData, ADK_ARTICLE_GROUP, "Paket")
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
End If
SPCSError = AdkFind(pData)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
End If
While SPCSError.lRc <> ADKE_EOF
Dim tempart As New Article
SPCSError = AdkGetStr(pData, ADK_ARTICLE_NUMBER, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Number = Temp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_NAME, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Name = Temp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_NAME_X, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Name_X = Temp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_GROUP, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Group = Temp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_ACCOUNTING_CODE, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Accounting_Code = Temp
End If
Temp = Space(50)
SPCSError = AdkGetBool(pData, ADK_ARTICLE_STOCK_GOODS, bTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Stock_Goods = bTemp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_UNIT_CODE, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Unit_Code = Temp
End If
Temp = Space(50)
SPCSError = AdkGetStr(pData, ADK_ARTICLE_SORT_ORDER, Temp, 50)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Sort_Order = Temp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_QUANTITY_IN_STOCK, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Quantity_In_Stock = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_QUANTITY_RESERVED, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Quantity_Reserved = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_DISPOSABLE_IN_STOCK, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Disposable_In_Stock = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_ORDER_POINT, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Order_Point = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_MINIMUM_ORDER, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Minimum_Order = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_MAXIMUM_ORDER, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Maximum_Order = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_ORDERED_QUANTITY, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Ordered_Quantity = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_PRICE, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Price = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_ESTIMATED_PURCHASE_PRICE, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Estimated_Price = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_QUANTITY_RESERVED, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Quantity_Reserved = nTemp
End If
Temp = Space(50)
SPCSError = AdkGetDouble(pData, ADK_ARTICLE_LAST_PURCHASE_PRICE, nTemp)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
Else
tempart.Last_Purchase_Price = nTemp
End If
If tempart.Group = "Paket" Then
returnArticles.Add(tempart)
End If
SPCSError = AdkNext(pData)
End While
SPCSError = AdkDeleteStruct(pData)
If SPCSError.lRc > 0 Then
Call GetErrorText(Error_Renamed)
End If
Return returnArticles
End Function
</code>Sv: SPCS API
Call AdkGetErrorText(xError, ADK_ERROR_TEXT_TYPE.elFunction, Temp, 255)
Har testat stringbuilder och temp = space(255) mm.
Får ju bara fel på den och det gäller VB i .NET
/Mvh MickeSv:SPCS API
Jag tar hand om felet osv och programmet exekverar färdigt som det ska, men avslutar aldrig. Får tvinga programmet att avsluta (programmet svarar inte, blabla)
Ngn som har en ide vad detta beror på eller hur man kan åtgärda detSv: SPCS API
Även ett av exempelprogrammen på utvecklar CD:n har samma problem och jag har rapporterat det till SPCS och de har konfirmerat att det är en bugg. Tyvärr så brukar de inte vara särskilt snabba på att fixa buggar. Jag rapporterade en annan simpel bug för 2 år sedan och varje gång jag frågar när de skall fixa den så säger de "i en kommande release".Sv:SPCS API
Sv: SPCS API
funkar
kanske inte snällaste sättet att ta död på programmet, men iaf..