Quantcast
Channel: pregunta sobre una funcion
Viewing all articles
Browse latest Browse all 5

pregunta sobre una funcion

$
0
0

buenas tardes, la pregunta que voy a realizar es un poco larga pero adjunto el codigo para que se guien y puedan ayudarme mejor con lo que busco, de antemano les agradezco sus colaboraciones.

bueno, yo estoy programando un webservice en 3 capas, en la capa de datos tengo lo siguiente, tenia un dataset el cual converti a un datatable, ya que necesito construir otro datatable con otra informacion que colocare mas abajo, lo que sucede es que tanto en la capa de negocios y en la de datos me sale un error que no puedo convertir de dataset a datatable, lo que tengo en la capa de datos es lo siguiente.

internal DataTable Contrato(string tipo_doc, string DocumentoID, string enti_nit, string rcto_fecdesde, string rcto_fechasta, string rcto_nrocto, string esta_codigo)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();

            string sql = string.Empty;

            try
            {
                SqlConnection oConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["Conexion"].ToString());
                SqlDataAdapter dapSql = new SqlDataAdapter();
                dapSql.SelectCommand =
                new SqlCommand();

                dapSql.SelectCommand.CommandType =
                CommandType.StoredProcedure;
                dapSql.SelectCommand.Connection = oConnect;
                dapSql.SelectCommand.CommandText =
                "PA_CONSULTAR_CONTRATOSXPROVEEDORES";

                dapSql.SelectCommand.Parameters.Add(
                new SqlParameter("@prov_cednit", DocumentoID));
                sql = "@prov_cednit " + DocumentoID;

                dapSql.SelectCommand.Parameters.Add(
                new SqlParameter("@enti_nit", enti_nit));
                sql += "@enti_nit" + enti_nit;

                dapSql.SelectCommand.Parameters.Add(
                new SqlParameter("@tipo_doc", tipo_doc));
                sql += "@tipo_doc" + tipo_doc;

                if (!string.IsNullOrEmpty(rcto_fecdesde))
                {
                    string[] strFecha = rcto_fecdesde.Split('/');
                    string strFechaFormateada = string.Format("{0}{1}{2}", strFecha[2], strFecha[1], strFecha[0]);
                    dapSql.SelectCommand.Parameters.Add(
                    new SqlParameter("@rcto_fecdesde", strFechaFormateada));
                    sql += "@rcto_fecdesde" + strFechaFormateada;
                }
                if (!string.IsNullOrEmpty(rcto_fechasta))
                {
                    String[] strFecha = rcto_fechasta.Split('/');
                    string strFechaFormateada = string.Format("{0}{1}{2}", strFecha[2], strFecha[1], strFecha[0]);
                    dapSql.SelectCommand.Parameters.Add(
                    new SqlParameter("@rcto_fechasta", strFechaFormateada));
                    sql += "@rcto_fechasta" + strFechaFormateada;
                }

                dapSql.SelectCommand.Parameters.Add(
                new SqlParameter("@rcto_nrocto", rcto_nrocto));
                sql += "@rcto_nrocto" + rcto_nrocto;

                dapSql.SelectCommand.Parameters.Add(
                new SqlParameter("@esta_codigo", esta_codigo));
                sql += "@esta_codigo" + esta_codigo;

                dapSql.Fill(dt);
                return dt;
            }
            catch (SqlException ex)
            {
                string e = ex.Message + ". Información Adicional: " + DocumentoID + " ::" + sql;
                return NoLista(e);
            }
        }

        public DataTable oDTContrato(string tipo_doc, string prov_cednit, string enti_nit, string rcto_fecdesde, string rcto_fechasta, string rcto_nrocto, string esta_codigo)
        {
            DataTable dt = Contrato(tipo_doc, prov_cednit, enti_nit, rcto_fecdesde, rcto_fechasta, rcto_nrocto, esta_codigo);
            return dt;
        }

en el return NoLista(e); es donde me marca el error de no poder conertir de dataset a datatable, esto en la capa de datos.

mas abajo tengo que construir otro datatable ya tengo armado el codigo con el que acceso a una biblioteca de documentos en sharepoint, y donde tengo que hacer 2 cosas, primero ir a una lista y buscar un id y otros datos asociados a un numero de cedula y luego de tener esos datos ir a la biblioteca de documentos y buscar los id de los documentos asociados a esos numeros que encontre en la lista. agradezco su colaboracion infinitamente. gracias, el codigo de acceso a la biblioteca de documentos es el siguiente

 public static XmlNode AddXmlElement(XmlNode parent, string elementName, string elementValue)
        {
            XmlNode element = parent.AppendChild(parent.OwnerDocument.CreateNode(XmlNodeType.Element, elementName, ""));
            if (elementValue != "")
                element.InnerText = elementValue;

            return (element);
        }

        public static XmlNode AddXmlElement(XmlDocument parent, string elementName, string elementValue)
        {
            XmlNode element = parent.AppendChild(parent.CreateNode(XmlNodeType.Element, elementName, ""));
            if (elementValue != "")
                element.InnerText = elementValue;

            return (element);
        }

        public static XmlNode AddXmlAttribute(XmlNode element, string attrName, string attrValue)
        {
            XmlNode attr = element.Attributes.Append((XmlAttribute)element.OwnerDocument.CreateNode(XmlNodeType.Attribute, attrName, ""));

            if (attrValue != "")
                attr.Value = attrValue;

            return (attr);
        }

        public static void AddFieldRef(XmlNode viewFields, string fieldName)
        {
            XmlNode fieldRef = AddXmlElement(viewFields, "FieldRef", "");
            AddXmlAttribute(fieldRef, "Name", fieldName);

        }

        internal string BuscarDocumento(string Sitio, string Biblioteca, string IdExpediente = null)
        {
            try
            {

                Lists lstTipo = new Lists();
                lstTipo.Credentials = RetornarCredencial();
                lstTipo.Url = Sitio;

                string documentLibraryName = @"DocumentosExpediente";

                //WebProxy proxyObj = new WebProxy("yourproxy", 80); 

                XmlNode ndlistView = lstTipo.GetListCollection(); // GetListAndView(Lista, "");

                XmlDocument allListsDoc = new XmlDocument();

                allListsDoc.LoadXml(ndlistView.OuterXml);

                // allListsDoc.Save(@"c:\allListsDoc.xml");
                XmlNamespaceManager ns = new XmlNamespaceManager(allListsDoc.NameTable);

                ns.AddNamespace("d", ndlistView.NamespaceURI);


                // now get the GUID of the document library we are looking for

                XmlNode dlNode = allListsDoc.SelectSingleNode("/d:Lists/d:List[@Title='" + documentLibraryName + "']", ns);

                string strTest = string.Empty;

                if (dlNode == null)
                {
                    Console.WriteLine("Document Library '{0}' not found!", documentLibraryName);
                }
                else
                {
                    //obtain the GUID for the document library and the webID
                    string documentLibraryGUID = dlNode.Attributes["ID"].Value;
                    string webId = dlNode.Attributes["WebId"].Value;

                    //Console.WriteLine("Opening folder '{0}' GUID={1}", documentLibraryName, documentLibraryGUID);
                    //create ViewFields CAML

                    XmlDocument viewFieldsDoc = new XmlDocument();

                    XmlNode ViewFields = AddXmlElement(viewFieldsDoc, "ViewFields", "");

                    AddFieldRef(ViewFields, "ID");
                    AddFieldRef(ViewFields, "GUID");
                    AddFieldRef(ViewFields, "ContentType");
                    AddFieldRef(ViewFields, "BaseName");
                    AddFieldRef(ViewFields, "Modified");
                    AddFieldRef(ViewFields, "EncodedAbsUrl");

                    //create QueryOptions CAML

                    XmlDocument queryOptionsDoc = new XmlDocument();
                    XmlElement query = queryOptionsDoc.CreateElement("Query");

                    XmlNode QueryOptions = AddXmlElement(queryOptionsDoc, "QueryOptions", "");

                    AddXmlElement(QueryOptions, "Folder", documentLibraryName);
                    AddXmlElement(QueryOptions, "IncludeMandatoryColumns", "FALSE");

                    //this element is the key to getting the full recusive list

                    XmlNode node = AddXmlElement(QueryOptions, "ViewAttributes", "");
                    AddXmlAttribute(node, "Scope", "Recursive");
                    //queryOptionsDoc.Save(@"c:\queryOptions.xml");// for debug

                    //obtain the list of items in the document library


                    if (!string.IsNullOrEmpty(IdExpediente))
                        query.InnerXml = string.Format("<Where>" +
                           "<And><Eq><FieldRef Name=\"numExpediente\" /><Value Type=\"Text\">{0}</Value></Eq>" +
                           "<And><Eq><FieldRef Name=\"estado\" /><Value Type=\"Choice\">Borrador</Value></Eq>" +
                           "<And><Eq><FieldRef Name=\"tipoFirma\" /><Value Type=\"Choice\">Digital</Value></Eq>" +
                           "<Eq><FieldRef Name=\"clase\" /><Value Type=\"Choice\">Salida</Value></Eq></And></And></And></Where>", IdExpediente);


                    XmlNode listContent = lstTipo.GetListItems(documentLibraryGUID, null, query, ViewFields, null, QueryOptions, webId);

                    XmlDocument xmlResultsDoc = new XmlDocument();

                    xmlResultsDoc.LoadXml(listContent.OuterXml);
                    ns = new XmlNamespaceManager(xmlResultsDoc.NameTable);
                    ns.AddNamespace("z", "#RowsetSchema");
                    //xmlResultsDoc.Save(@"c:\listContent.xml"); // for debug

                    XmlNodeList rows = xmlResultsDoc.SelectNodes("//z:row", ns);

                    if (rows.Count == 0)
                        return "No content found";

                    string urlDocumentoWord = "";
                    string URLSiteBiblioteca = GetURL("SPSite");
                    string IdBibliotecaDestino = documentLibraryGUID;
                    string nameBibliotecaDestino = documentLibraryName;
                    string fileName = "";


                    foreach (XmlNode row in rows)
                    {
                        strTest += row.Attributes["ows_ContentType"].Value + " " + row.Attributes["ows_GUID"].Value + " :: " + row.Attributes["ows_BaseName"].Value+ "<br/>";

                        urlDocumentoWord = row.Attributes["ows_EncodedAbsUrl"].Value;
                        fileName = row.Attributes["ows_BaseName"].Value + ".pdf";

                    }



                }

                return strTest;

            }
            catch (Exception ex)
            {
                return "Errro" + ex.Message;
            }


Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images