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