Name | DataType | Subtype |
recServer | Record | Server |
recDatabase | Record | Database |
Pero cuando accedemos por web service nos da un error porque las tablas virtuales no tienen generados los metadatos para ser utilizadas por estos.
Una de las formas de conseguirlo es mediante el archivo Config de los web services donde esta indicado el servidor y la BBDD. El archivo es CustomSettings.config y esta en la carpeta de la aplicacion. Este archivo es un XML con los parametros de configuracion que los web services desplegan al iniciar el servicio.
Name | DataType | Subtype |
recServer | Record | Server |
recDatabase | Record | Database |
recUsuarioSQL | Record | Usuario |
cu50203 | Codeunit | CodeSQL |
DomDoc | Automation | 'Microsoft XML, v4.0'.DOMDocument |
DomNode | Automation | 'Microsoft XML, v4.0'.IXMLDOMNode |
MyServerName | Text | |
MyBBDDName | Text |
IF ISSERVICETIER THEN BEGIN
//Creamos un objeto XML para tratar el archivo config IF ISCLEAR(DomDoc) THEN
CREATE(DomDoc);
//Cargamos el archivo config
DomDoc.load(APPLICATIONPATH + 'CustomSettings.config');
//Leemos Los Nodos
DomNode := DomDoc.selectSingleNode('//appSettings/add[@key='DatabaseServer']');
MyServerName := DomNode.attributes.item(1).text;
DomNode := DomDoc.selectSingleNode('//appSettings/add[@key='DatabaseName']');
MyBBDDName := DomNode.attributes.item(1).text;
END ELSE BEGIN
//Si no es WEB Service lo hacemos de la manera tradicional
recServer.RESET;
recServer.SETRANGE("My Server",TRUE);
IF recServer.FINDSET THEN BEGIN
recDatabase.RESET;
recDatabase.SETRANGE("My Database",TRUE);
IF recDatabase.FINDSET THEN BEGIN
MyServerName := recServer."Server Name";
MyBBDDName :=recDatabase."Database Name";
END;
END;
END;
Con esto tenemos resuelto el problema.
No hay comentarios:
Publicar un comentario