Mine områder
Hjelp
Mamut One
Mamut One Mamut One expand navigation
Anonymous
Ikke relevant

Lese ordrelinjer via API

av Anonymous

Hei,

Jeg sitter her hos en kunde som som bruker Mamut og vi bruker API'et (168 sider doc). Jeg har fått over headers (Orderheader), men når jeg legger inn kode for linjene (Orderline) som er angitt i bold, får jeg en NullPointerException. Er det noe jeg har glemt som jeg overser når jeg skal lese fra mamut for ordrelinje objektet?

  case connectionstate.Success:
      dynamic rs = oGba.executequeryADORS("SELECT " + sqltop + " [Orderid], [LinkID] FROM [Client00010004].[dbo].[G_ORDER] WHERE Orderid IN (6640)", "", "ADORS", 1);
      rs.MoveFirst();
      while (!rs.EOF)
      {
              dynamic c = new Orderheader();
               mOrderHeader mC = new mOrderHeader();
       c = Activator.CreateInstance(Type.GetTypeFromProgID("GBAAPI.Orderheader"));

               dynamic oOrderL = new Orderline();
                oOrderL = Activator.CreateInstance(Type.GetTypeFromProgID("GBAAPI.Orderline"));

                c.NewInit(oGba);

                string sOrderId = rs.Fields["Orderid"].Value.ToString().Trim();
                string sLinkId = rs.Fields["LinkID"].Value.ToString().Trim();

                int i2 = (int)c.Get(int.Parse(rs.Fields["Orderid"].Value.ToString().Trim()), int.Parse(rs.Fields["LinkID"].Value.ToString().Trim()));
               if (i2 != 0)
              {
                     mC.NoofLines = c.NoofLines is DBNull ? null : (int?)c.NoofLines;

                     for (int i = 0; i < mC.NoofLines; i++)
                    {
                           oOrderL = (gbaapi.Orderline)c.getline(i);

                           //var line = new mOrderLine()
                           //{
                           //    Prodid = "",
                           //    Qty = 0,
                           //    Price = 0.0,
                           //};

                           //mC.Lines.Add(line);
                     }

                     // resten av kode funker, men klarer ikke å lese ordre linjene

                 }

        }                        

 


 

 

 

    

1 SVAR 1

av Sven Olav Rosnes

Hei,

Her er et eksempel. Koden er litt kortere siden man ikke trenger linkid om man har orderid.

using System.Dynamic;
...
        static dynamic createInstance(string progid)
        {
            return Activator.CreateInstance(Type.GetTypeFromProgID(progid));
        }
...
        private void Salesorder_read_line_Click(object sender, EventArgs e)
        {
            var oGBA = createInstance("gbaapi.gba");
            var conn = createInstance("gbaapi.ConnectInfo");
            conn.SetConnectBasicInfo(".", "MAMUT", 1, 4);
            int x = oGBA.OpenConnection(conn);

            var oOrder = oGBA.createorderobject(true);
            oOrder.NewInit(oGBA);

            oOrder.Get(6640);
            for (int i = 1; i < Convert.ToInt32(oOrder.Nooflines) + 1; i++)
            {
                dynamic OrderLine = Activator.CreateInstance(Type.GetTypeFromProgID("GBAAPI.Orderline"));
                OrderLine = oOrder.getline(i);
                MessageBox.Show(OrderLine.Prodid.ToString()+" "+OrderLine.Desc.ToString());
            }

            MessageBox.Show("Done!");
            this.Close();
 }