CalcFields CFrontDotNet
Katsela
Member Posts: 3
Hi all! I am trying to get calculated field (Balance) data from Customers table , but i'm always getting zero.
CFrontDotNet.Instance.ConnectServerAndOpenDatabase("Servername", NetType, "databaseName", 0, false, false, "userName", "password");
CFrontDotNet.Instance.OpenCompany("CompanyName");
int tableNo = CFrontDotNet.Instance.TableNo("Customer");
tableHandle = CFrontDotNet.Instance.OpenTable(tableNo);
int recordHandle = CFrontDotNet.Instance.AllocRecord(tableHandle);
//in this row balance definitely is more than zero
CFrontDotNet.Instance.SetFilter(tableHandle, CFrontDotNet.Instance.FieldNo(tableHandle,"No."), "=C00040");
//getting first row
CFrontDotNet.Instance.FindFirstRecord(tableHandle, recordHandle);
//58 is the balance fieldNo
CFrontDotNet.Instance.CalcFields(tableHandle, recordHandle, new int[]{58});
//this value is always zero
CFrontDotNet.Instance.FieldToString(tableHandle, recordHandle, CFrontDotNet.Instance.FieldNo(tableHandle,"Balance"))
CFrontDotNet.Instance.ConnectServerAndOpenDatabase("Servername", NetType, "databaseName", 0, false, false, "userName", "password");
CFrontDotNet.Instance.OpenCompany("CompanyName");
int tableNo = CFrontDotNet.Instance.TableNo("Customer");
tableHandle = CFrontDotNet.Instance.OpenTable(tableNo);
int recordHandle = CFrontDotNet.Instance.AllocRecord(tableHandle);
//in this row balance definitely is more than zero
CFrontDotNet.Instance.SetFilter(tableHandle, CFrontDotNet.Instance.FieldNo(tableHandle,"No."), "=C00040");
//getting first row
CFrontDotNet.Instance.FindFirstRecord(tableHandle, recordHandle);
//58 is the balance fieldNo
CFrontDotNet.Instance.CalcFields(tableHandle, recordHandle, new int[]{58});
//this value is always zero
CFrontDotNet.Instance.FieldToString(tableHandle, recordHandle, CFrontDotNet.Instance.FieldNo(tableHandle,"Balance"))
0
Comments
-
Hi Katsela,
Can you refer my sample code. My code wrote with VB.NET.
Sorry for my long code. I don't know how to upload at here.'''Calc Function Private Sub GetFromNAV() Dim intTableNos As Integer = GetTableNos("Customer") - '''your CFrontDotNet.Instance.TableNo("Customer"); Dim intTableHandler As Integer = GetTableHandler(intTableNos) - '''your CFrontDotNet.Instance.OpenTable(tableNo); Dim intRecordHandler As Integer = GetRecordHandler(intTableHandler) - '''your CFrontDotNet.Instance.AllocRecord(tableHandle); Dim strValue As Microsoft.Navision.CFront.NavisionValue Dim m_EntryNo As String = "2485592" ''' Customer ID Dim decBalance As Decimal = 0 Dim fldLst() As Integer = {58} ''' Field ID (Balance) NAVCFront.SetRange(intTableHandler, 1, _ GetBytes(m_EntryNo, NavisionFieldType.Code), _ GetBytes(m_EntryNo, NavisionFieldType.Code)) Do While NAVCFront.NextRecord(intTableHandler, intRecordHandler, 1) <> 0 NAVCFront.CalcFields(intTableHandler, intRecordHandler, fldLst) strValue = NAVCFront.GetFieldData(intTableHandler, intRecordHandler, 58) decBalance = GetValueAsText(strValue) Loop End Sub Public Function GetBytes(ByVal value As String, ByVal types As CFront.NavisionFieldType) As Byte() Erase GetBytes Select Case types Case CFront.NavisionFieldType.Text Dim BytesValue As CFront.NavisionText = CFront.NavisionText.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Option Dim BytesValue As CFront.NavisionOption = New CFront.NavisionOption(CInt(value)) Return BytesValue.GetBytes Case CFront.NavisionFieldType.BigInteger Dim BytesValue As CFront.NavisionBigInteger = CFront.NavisionBigInteger.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Binary Dim BytesValue As CFront.NavisionBinary = CFront.NavisionBinary.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Blob Dim BytesValue As CFront.NavisionBlob = CFront.NavisionBlob.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Boolean Dim BytesValue As CFront.NavisionBoolean = CFront.NavisionBoolean.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Code Dim BytesValue As CFront.NavisionCode = CFront.NavisionCode.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Date Dim BytesValue As CFront.NavisionDate = CFront.NavisionDate.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.DateFormula Dim BytesValue As CFront.NavisionDateFormula = CFront.NavisionDateFormula.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.DateTime Dim BytesValue As CFront.NavisionDateTime = CFront.NavisionDateTime.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Decimal Dim BytesValue As CFront.NavisionDecimal = CFront.NavisionDecimal.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Duration Dim BytesValue As CFront.NavisionDuration = CFront.NavisionDuration.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Guid Dim BytesValue As CFront.NavisionGuid = CFront.NavisionGuid.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Integer Dim BytesValue As CFront.NavisionInteger = New CFront.NavisionInteger(CInt(value)) Return BytesValue.GetBytes Case CFront.NavisionFieldType.RecordId Dim BytesValue As CFront.NavisionRecordId = CFront.NavisionRecordId.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.TableFilter Dim BytesValue As CFront.NavisionTableFilter = CFront.NavisionTableFilter.Parse(value) Return BytesValue.GetBytes Case CFront.NavisionFieldType.Time Dim BytesValue As CFront.NavisionTime = CFront.NavisionTime.Parse(value) Return BytesValue.GetBytes End Select End Function Public Function GetValueAsText(ByVal value As CFront.NavisionValue) As String GetValueAsText = vbNullString Select Case value.FieldType Case CFront.NavisionFieldType.Text Dim BytesValue As CFront.NavisionText = value Return BytesValue.ToString Case CFront.NavisionFieldType.Option Dim BytesValue As CFront.NavisionOption = value Return BytesValue.ToString Case CFront.NavisionFieldType.BigInteger Dim BytesValue As CFront.NavisionBigInteger = value Return BytesValue.ToString Case CFront.NavisionFieldType.Binary Dim BytesValue As CFront.NavisionBinary = value Return BytesValue.ToString Case CFront.NavisionFieldType.Blob Dim BytesValue As CFront.NavisionBlob = value Return BytesValue.ToString Case CFront.NavisionFieldType.Boolean Dim BytesValue As CFront.NavisionBoolean = value Return BytesValue.ToString Case CFront.NavisionFieldType.Code Dim BytesValue As CFront.NavisionCode = value Return BytesValue.ToString Case CFront.NavisionFieldType.Date Dim BytesValue As CFront.NavisionDate = value Return BytesValue.ToString Case CFront.NavisionFieldType.DateFormula Dim BytesValue As CFront.NavisionDateFormula = value Return BytesValue.ToString Case CFront.NavisionFieldType.DateTime Dim BytesValue As CFront.NavisionDateTime = value Return BytesValue.ToString Case CFront.NavisionFieldType.Decimal Dim BytesValue As CFront.NavisionDecimal = value Return BytesValue.ToString Case CFront.NavisionFieldType.Duration Dim BytesValue As CFront.NavisionDuration = value Return BytesValue.ToString Case CFront.NavisionFieldType.Guid Dim BytesValue As CFront.NavisionGuid = value Return BytesValue.ToString Case CFront.NavisionFieldType.Integer Dim BytesValue As CFront.NavisionInteger = value Return BytesValue.ToString Case CFront.NavisionFieldType.RecordId Dim BytesValue As CFront.NavisionRecordId = value Return BytesValue.ToString Case CFront.NavisionFieldType.TableFilter Dim BytesValue As CFront.NavisionTableFilter = value Return BytesValue.ToString Case CFront.NavisionFieldType.Time Dim BytesValue As CFront.NavisionTime = value Return BytesValue.ToString End Select End FunctionI think you forget this part
GetValueAsText(strValue)
Best Regards,
YukonMake Simple & Easy0 -
it works thanks!! \:D/0
Categories
- All Categories
- 75 General
- 75 Announcements
- 66.7K Microsoft Dynamics NAV
- 18.8K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 610 NAV Courses, Exams & Certification
- 1.9K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 251 Dynamics CRM
- 103 Dynamics GP
- 6 Dynamics SL
- 1.5K Other
- 991 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 28 Design Patterns (General & Best Practices)
- Architectural Patterns
- 9 Design Patterns
- 4 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1K General Chat
- 1.6K Website
- 77 Testing
- 1.2K Download section
- 23 How Tos section
- 249 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions