Mine områder

Logg inn for å legge til dine favorittområder
avbryt
Viser resultater for 
Søk heller etter 
Mente du: 
CONTRIBUTOR *

Lese ordrelinjer via API

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
Highlighted

Re: Lese ordrelinjer via API

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();
 }