예제 #1
0
파일: Form5.cs 프로젝트: dachimoto/lt
        private static DataTable GetSforceData()
        {
            DataTable dt = null;
            mypartner.SforceService binding = new mypartner.SforceService();
            mypartner.LoginResult lr = binding.login("*****@*****.**", "xyz6854XhuVzAcbHWENCYLHNQX41z943");
            string strSQL ="", strColumnNames = "";
            if (!lr.passwordExpired)
            {
                binding.Url = lr.serverUrl;
                binding.SessionHeaderValue = new mypartner.SessionHeader();
                binding.SessionHeaderValue.sessionId = lr.sessionId;

                mypartner.QueryResult qr = null;
                binding.QueryOptionsValue = new mypartner.QueryOptions();
                binding.QueryOptionsValue.batchSize = 25;
                binding.QueryOptionsValue.batchSizeSpecified = true;
                qr = binding.query(strSQL);
                bool done = false;

                if (qr.size > 0)
                {
                    dt = new DataTable();
                    mypartner.sObject sOtmp = (mypartner.sObject)qr.records[0];
                    int iColumnCount = 0;
                    if (strColumnNames.Length > 0)
                    {
                        string[] arrColumnNames = strColumnNames.Split(',');
                        iColumnCount = arrColumnNames.Length;
                        for (int i = 0; i < iColumnCount; i++)
                        {
                            dt.Columns.Add(arrColumnNames.GetValue(i).ToString());
                        }
                    }
                    else
                    {
                        iColumnCount = sOtmp.Any.Length;
                        for (int i = 0; i < sOtmp.Any.Length; i++)
                        {
                            dt.Columns.Add(sOtmp.Any[i].LocalName);
                        }
                    }
                    string[] prValues = new string[iColumnCount];
                    while (!done)
                    {
                        for (int i = 0; i < qr.records.Length; i++)
                        {
                            sOtmp = (mypartner.sObject)qr.records[i];

                            int j = 0, iColIndex = 0;
                            while (j < sOtmp.Any.Length)
                            {
                                prValues.SetValue(sOtmp.Any[j].InnerText, iColIndex);
                                iColIndex++;
                                j++;
                            }
                            dt.Rows.Add(prValues);
                        }

                        if (qr.done)
                        {
                            done = true;
                        }
                        else
                        {
                            qr = binding.queryMore(qr.queryLocator);
                        }
                    }
                }
            }

            return dt;
        }