Traer datos

Hola saludos, vera quiero saber si me puede ayudar con esto, tengo en un campo memo una cadena,
<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd
http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"
version='2.0'
serie='Q'
folio='000683'
fecha='2010-09-27T16:49:50'
sello='MSb6yeKVphf1IpxonaLBnH5CY1vczyxnkXVphFIEneiufFWLNXWy3y5n+Y0wvC+cIdSeM1z5CLH/VQzqViJKEPSoM7F6c1l/YLCDEmQ+yY5gG+EGDJ0eJyxUHt3GTEu1EUC5HHe1k1lyk4M3Knl/ModvtLqDDej8HOEoy9rK+tY='
noAprobacion='1'
anoAprobacion='2009'
tipoDeComprobante='ingreso'
formaDePago='Efectivo'
condicionesDePago='Una Sola Exibicion'
subTotal='2520'
descuento='0'
total='2923'
noCertificado='10001200000000022517'
certificado='
MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQEF
BQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGlj
bywgRC5GLjELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FU
MTYwNAYDVQQLFC1BZG1pbmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5m
b3JtYWNp824xLjAsBgNVBAoUJVNlcnZpY2lvIGRlIEFkbWluaXN0cmFjafNuIFRy
aWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMTAwODIxMTUyMjA4WjCBmDElMCMG
A1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA1UEBRMVIC8g
QUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBgNVBAsT
ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6
IFNBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJe
xk2IpLoTdNXg4ToGRZ/f+hIjmj3N6ODWX1ARNFGYocEHf113GpW5Oe/mj6UqhBpi
H4JRTNR4Udb8myJTArIlODynVHuIUuyhKo7gbMbDdXjilTAYY2XWQuQ7aDtWwntU
mNg4vAC/F3OtRz3+y9wM5QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQE
AwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAafyD4gMsOvq7E3raPntmQlJTxpWwNySq
skE7fe23HVL9UKFCUlWWx/W8gluxIX9S19y17iWnGbtmbNddHxG5PznPsy/a8Plw
NHjDW0FOpia2LsvDrNcdPiJhzL/1OVagkenffFf8bLEetF3ktxZ7ifcH1yxVxpZ7
PS/pe8YIOpWRuMmTV4ypGdsw9TW3HVP5IJ/canuQGPTb3LQ8ojihW2dHnC6ojaWW
4GHFSZAPhQJ/DaH/UgFjaQke/RBtoAketfROdG+1qYeA1q/is04O4AXNmMByGp7Z
nvGNrO9LDBvs3eKN4ZYcQyjxFEbr1X/xUqHCRF1VEkkC5jJQ1ktC4g==
'>
<Emisor
rfc='ISP900909Q88'
nombre='Industrias del Sur Poniente, S.A. De C.V.'>
<DomicilioFiscal
calle='Alvaro Obregon'
noExterior='37'
noInterior='3'
colonia='Col. Roma Norte'
localidad='Mexico'
municipio='Cuauhtemoc'
estado='Distrito Federal'
pais='Mexico'
codigoPostal='06700'/>
<ExpedidoEn
calle='Jjuande dios '
noExterior='80'
noInterior='301'
colonia='obreo'
localidad='mexico'
municipio='cuactemoc'
estado='distrito fedewral'
pais='mexico'
codigoPostal='03800'/>
</Emisor>
<Receptor
rfc='BBS090320MB9'
nombre='bsmx business de mexico' >
<Domicilio
calle='soria'
noExterior='140'
noInterior='2'
colonia='alamos'
localidad='mexico'
municipio='benito juares'
estado='distrito federal'
pais='mexico'
codigoPostal='03400'/>
</Receptor>
<Conceptos>
<Concepto
cantidad='45'
unidad='serv'
descripcion='mano d eobra'
valorUnitario='56'
importe='2520'/>
</Conceptos>
<Impuestos totalImpuestosTrasladados='403'>
<Traslados>
<Traslado impuesto = "IVA" tasa='16' importe='403'/>
</Traslados>
</Impuestos>
</Comprobante>
Todo esta en un campo de tipo memo y quiero solo que me encuentre <Conceptos> Y </Conceptos>y que me xtraigha lo que esta entre esas 2 palabras que que de algo así
<Conceptos>----> que encuentre esta palabra
<Concepto
cantidad='45'
unidad='serv'
descripcion='mano d eobra'
valorUnitario='56'
importe='2520'/>
</Conceptos>---- y esta
y que me extraiga solo que esta dentro de esas 2 para que que de asi
cantidad='45'
unidad='serv'
descripcion='mano d eobra'
valorUnitario='56'
importe='2520'
Tengo un código que lee un txt linea por linea pero no puedo hacer que busqeu la pala bra, espero que me pueda ayudar, grasi por su tiempo

1 respuesta

Respuesta
1
Este código, quizás necesite algunos ajustes pero es un buen comienzo:
LOCAL lnPos1, lnPos2 as Integer
LOCAL lcCadenaBuscada1,lcCadenaBuscada2,lcCadenaExtraida as String
CLEAR
SELECT table1
lcCadenaBuscada1="<Conceptos>"
lcCadenaBuscada2="</Conceptos>"
lnPos1=AT(lcCadenaBuscada1,cadena)
lnPos2=AT(lcCadenaBuscada2,cadena)
lcCadenaExtraida=SUBSTR(cadena,lnPos1,(lnPos2-lnPos1))
lcCadenaExtraida=STRTRAN(lcCadenaExtraida,lcCadenaBuscada1,"")
? LcCadenaExtraida
En este ejemplo yo cree una tabla (table1) con un campo memo (cadena). Ajústalo a tu tabla y campos y me cuentas.
Gracias, me ayudo mucho solo que intente usar elk mismo código para extraer solo el sello del campo ise este código, basándome en el que me paso.
LOCAL lnPos1,lnPos2 as Integer
LOCAL lcCadenaBuscada1,lcCadenaExtraida as String
CLEAR
SELECT xmlmemo
lcCadenaBuscada1="sello="
lnPos1=AT(lcCadenaBuscada1,xmlmmo)
lcCadenaExtraida=SUBSTR(xmlmmo,lnPos1,(lnPos2-lnPos1))
lcCadenaExtraida=STRTRAN(lcCadenaExtraida,lcCadenaBuscada1,"")
thisform.list3.AddItem (lcCadenaExtraida)
No me marca errores pero no me proyecta la cadena en el listo bost, podriadecirme en que ¿estoy mal?
Buscando sello:
LOCAL lnPos1, lnPos2 as Integer
LOCAL lcCadenaBuscada1,lcCadenaBuscada2,lcCadenaExtraida as String
CLEAR
SELECT table1
lcCadenaBuscada1="sello="
lcCadenaBuscada2="noAprobacion"
lnPos1=AT(lcCadenaBuscada1,cadena)
lnPos2=AT(lcCadenaBuscada2,cadena)
lcCadenaExtraida=SUBSTR(cadena,lnPos1,(lnPos2-lnPos1))
lcCadenaExtraida=STRTRAN(lcCadenaExtraida,lcCadenaBuscada1,"")
? LcCadenaExtraida
El ejemplo es bastante arcaico en cuanto a buscar elementos o extraer cadenas de otra cadena y la programación puede ser un poco difícil de mantener.
Veo que lo que tienes allí es una definición de un archivo xml. Quizás en otro hilo de pregunta se pueda hablar entonces de otras funciones de Fox 9 (que es la versión que tengo): xmltocursor() y strtofile().
http://msdn.microsoft.com/es-es/library/cc484718%28VS.71%29.aspx
¿Te funciono?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas