FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
problema com un xml
Buen dia amigos, espero me puedan ayudar con el siguiente inconveniente
Tengo un programa en visual, este genera un xml a partir de un .DBF (codigos de barra y demas datos como descripcion del producto) para luego enviarlo a un procedimiento almacenado en un servidor SQLServer2005. este comprueba que lo contenido de la tabla DBF exista dentro de la tabla inventario del programa, el procedimiento almacenado me devuelve como resultado una lista con los codigos de barras que debo crear. He intentado recrear solo este procedimiento dentro de un pequeño ejecutable en Delphi (leer el DBF, crear el xml y ejecutar el procedimiento almacenado con los datos del xml) Uds me diran, por que no copio y pego y creo el mismo procedimiento de visual... el detalle esta en que aca se quiere eliminar la VB, sobre todo por que esta escrito con VB6 (algo antiguo) A lugar... he logrado crear el xml, pero al enviarlo al SP (Stored Procedure) me suelta un error. Mi codigo (DELPHI) es este; Código:
procedure TFormPrincipal.BtnValidarClick(Sender: TObject); var Stream : TStringStream; Nodo : IXMLNode; begin if FileExists('C:\Ziptemp\Movitran.DBF') = false then //Archivo Movitran begin Showmessage('No Existe el archivo Movitran.dbf en la carpeta C:\Ziptemp'); FormPrincipal.CloseQuery; Abort; end; Try //ejecuto la consulta en el dbf QueryDBF.Close; QueryDBF.SQL.Clear; QueryDBF.SQL.Text:='Select max(NumTra) as Numt, CodBarra, max(Nombre) as Nomb, '; QueryDBF.SQL.Add('sum(Cantidad) as Canti, max(Referencia) as Refer, max(Marca) as Marc '); QueryDBF.SQL.Add('from movitran.dbf GROUP BY CodBarra'); QueryDBF.Open; if QueryDBF.Recordset = nil then Exit; Stream := TStringStream.Create(''); try // creo el .xml QueryDBF.Recordset.Save(TStreamAdapter.Create(stream) as IUnknown, adPersistXML); Stream.Position := 0; XML.LoadFromStream(stream); //elimino un nodo que no me interesa; XML = Componente TXMLDocument XML.DocumentElement.ChildNodes.Delete('s:Schema'); XML.SaveToFile('D:\prueba.xml'); //Esta linea es solo para ir viendo como va quedando el xml finally Stream.Free; end; Except On E: Exception do showmessage('Error al crear archivo de informacion del DBF'); End; //try //aqui llamo al procedimiento almacenado //SPSQL = componente TADOStoredProc SPSQL.ProcedureName:='PROCESAR_MOVITRAN'; SPSQL.Parameters.CreateParameter('@strXML',ftstring, pdinput,length(xml.XML.Text),xml.XML.Text); SPSQL.Parameters.CreateParameter('@strProceso', ftstring, pdinput, 50, 'COMPRAS'); SPSQL.ExecProc; // aca es la linea que me da el error //except // on E: Exception do // ShowMessage('No se Puede Establecer Conexion al Servidor Sql con los datos suministrados'); //end; end; Error de análisis de XML 0xc00ce553 en la línea número 0, junto al texto XML "" el codigo usado en VB6 es: Código:
Dim XMLDocumento As DOMDocument Dim schemaNode As MSXML2.IXMLDOMNode Set XMLDocumento = New DOMDocument rcsMovArchivoExt.Save XMLDocumento, adPersistXML With XMLDocumento .setProperty "SelectionNamespaces", "xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'" Set schemaNode = .selectSingleNode("//s:Schema") With .documentElement .removeChild schemaNode .removeAttribute "xmlns:s" .removeAttribute "xmlns:dt" End With End With Dim xmlParametro As ADODB.Parameter With sqlComando .ActiveConnection = cnnConexion .CommandText = "PROCESAR_MOVITRAN" .CommandType = adCmdStoredProc .Parameters.Append .CreateParameter("@strXML", adVarChar, adParamInput, Len(XMLDocumento.xml), XMLDocumento.xml) .Parameters.Append .CreateParameter("@strProceso", adVarChar, adParamInput, 50, "COMPRAS") rcsPrendas.Open sqlComando, , adOpenDynamic, adLockOptimistic End With xml de delphi Cita:
Código:
<xml xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <rs:data> </rs:data> </xml> gracias por la colaboracion que me puedan prestar |
#2
|
||||
|
||||
Recuerda poner tus preguntas en el foro adecuado, lo has puesto en la nueva sección de "Trucos", algo que no tiene nada que ver.
Lo paso a "Varios". |
#3
|
|||
|
|||
gracias casimiro, veia si habia algo en trucos, honestamente no vi si publique alli
|
#4
|
||||
|
||||
Cualquiera puede equivocarse
|
|
|
|