llamar funciones en sqlserver

1,108 views
Skip to first unread message

Edgar Barron

unread,
May 30, 2013, 12:04:45 PM5/30/13
to mundovis...@googlegroups.com
Hola amigos

necesito un ayuda

Me han encargado que desarrolle un modulo independiente, del sistema
con que estan trabajando, para facilitar un proceso que muy engorroso,
bueno ya lo hice , me conecto , actualizo, agrego, uso los store
proce, pero el problema que tengo es que quiero utilizar sus funciones
, si no se como llamarlos

estaria muy agredecido por su ayuda

Alex Orihuela Rosales

unread,
May 30, 2013, 12:05:47 PM5/30/13
to mundovis...@googlegroups.com
Sus funciones son de base de datos?
O del fox?
Saludos
Alex.



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



Aaron varon

unread,
May 30, 2013, 12:09:25 PM5/30/13
to Mundo Visual FoxPro
Hola Edgar, en SQLServer también puedes crear objetos Function; entonces cualquier aplicacion puede hacer uso de las funciones; ahora puedes tener funciones en modo aplicacion como las de FOX que ya están compiladas y no puedes usar, pero también existen funciones externas como las DLLs que si puedes invocarlas desde cualquier aplicacion Win32.


El 30 de mayo de 2013 11:04, Edgar Barron <embar...@gmail.com> escribió:
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.





--
DELGADO JAIMES, Roberto Aarón
Movistar: 994464850  /  RPM: #994464850

Edgar Barron

unread,
May 30, 2013, 1:07:26 PM5/30/13
to mundovis...@googlegroups.com

Hola

Gracias por rapidez de su apoyo

Bien , las funciones están en el mismo sqlserver  , pero yo las quiero llamar desde el  vfp para no  hacerlas, ya que tengo otras cosas que avanzar con este programa

Alex Orihuela Rosales

unread,
May 30, 2013, 1:28:15 PM5/30/13
to mundovis...@googlegroups.com
Amigos
Si están en el sql server no hay problema, puedes usarla desde tus store procedures sin problemas... :) 
Saludos
Alex

Alex Orihuela Rosales

unread,
May 30, 2013, 1:30:00 PM5/30/13
to mundovis...@googlegroups.com
Te comento lo que hago, para mis funciones de sql server yo las llamo desde mis SP (los cuales llamo desde fox)
En sql server para llamar a una funcion desde un sp seria algo asi:

Select dbo.mifuncion(parametro1, parametro2,...) nombrevalordevuelto

Saludos
Alex

Aaron varon

unread,
May 30, 2013, 1:32:35 PM5/30/13
to Mundo Visual FoxPro
Por ejemplo puedes usar desde Fox el siguiente T-SQL:
SELECT TOP 100 *, [dbo].[QFN_SMPCHK_DESPATCH_LIST](SAMPLEID,'PRIMARY','DESPATCHNO',',') AS Despachos FROM SAMPLEDESPATCH

O como dice Alex usar desde un SP.


El 30 de mayo de 2013 12:28, Alex Orihuela Rosales <alex.orihu...@gmail.com> escribió:



--
graf01.png

Diego Mendoza

unread,
May 31, 2013, 9:10:20 AM5/31/13
to mundovis...@googlegroups.com
Hola como estas, asi llamo yo a una funcion de sqlserver desde visual fox, la misma me devuelve el interes hay dia de un cobro vencido

** funcion en el sqlserver :  dbo.fcn_recalculo_por_interes
** recibe 3 parametros  Codigo del cobro(CUENTA.ID_COBRO),Año del cobro(CUENTA.ANIO),  La fecha actual para los intereses (vhoy)
**la funcion se ejecuta y devuelve el resultado del interes acumulado en el temporal temp_resultado y en el campo importe 

vhoy=date()
IF SQLEXEC(GNCONNHANDLE,"select dbo.fcn_recalculo_por_interes (?CUENTA.ID_COBRO,?CUENTA.ANIO,?vhoy) as                       
                                                  importe","temp_resultado")<=0

     IF AERROR(AERRORARRAY) > 0
        = MESSAGEBOX(AERRORARRAY(2), 16, 'ERROR5')      
     ENDIF     
 ELSE
     SELECT temp_resultado
    **muestro en dos text el interes para la fecha actual
     thisform.text16.Value=DATE()
     thisform.text17.Value=ALLTRIM(CAST(temp_resultado.importe as char(20)))
 ENDIF       

Alex Orihuela Rosales

unread,
May 31, 2013, 9:59:25 AM5/31/13
to mundovis...@googlegroups.com
Amigos
Usar transac es un buen método para nuestros sistemas, por la rápidez, sin embargo no es muy seguro, dado que si uno conoce la forma de conectarse a su bd (que por lo general es ODBC) las personas que conocen de esto pueden hacer lo que quieran con la base de datos usando ese odbc... pero si usan solo SPS entonces están limitados a las consultas y ejecución permitidas por los sps, por ejemplo no creo que se creen sps para hacer drop table... pero con el transac si se podria hacer...
Solo para que lo tomen en cuenta.
Saludos
Alex.

Juan López

unread,
May 31, 2013, 10:39:23 AM5/31/13
to mundovis...@googlegroups.com
La mejor forma de utilizar SQL con Fox es provocar la ejecución de funciones y procedimientos de tratamiento de actualización, modificación, e inserción masiva en el servidor de forma desatendida, ya que un tableupdate o insert masivo con actualización en formato real deja a VFP colapsado y con un cuello de botella muy considerable.
Saludos,

Juan López
juani...@gmail.com

Edgar Barron

unread,
May 31, 2013, 11:33:34 AM5/31/13
to mundovis...@googlegroups.com

Hola

A todos

Justo eso era lo que necesitaba, me ahorraron horas de investigación, algo tan simple, pero cuando tienes muchas cosas que hacer te falta tiempo y les agradezco a todos que tuvieron la gentiliza en brindarme su apoyo y sugerencias.

 

 

Edgar Barron

Aaron varon

unread,
May 31, 2013, 11:38:43 AM5/31/13
to Mundo Visual FoxPro
Lo que menciona Alex es cierto, pero el SQLServer cuenta con objetos usuarios (Login y Users) que permite enlazar roles; entonces una buena práctica es dar a los usuarios los reles db de db_reader y db_writer, y estos solo tienen permiso de hacer cambios en registros de tablas. Si se desea mas seguridad se cuenta con roles; y estos solo pueden hacer cambios y consultas solo a tablas, vistas, sp, etc que uno vea conveniente.

A los desarrolladores otra buena práctica es darle permiso de db_owner.

Edgar Barron

unread,
May 31, 2013, 12:14:40 PM5/31/13
to mundovis...@googlegroups.com

Hola

A TODOS

 

El software que estoy analizando , esta desarrollado en  vb.net, pero por problemas de complejidad al utilizar ese modulo se les hace mas pesado y complicado, es por eso que estoy desarrollando este nuevo sistema paralelo para agilizar los procesos que se les hace mas complejo, y trabaja con sqlserver 2005.

 

 

La conexión local me conecto sin ningún problema sin utilizar ODBC.

Me analice la basa de datos, ya se como están relacionada sus tablas, y por ahí avance sin problemas.

Trabajo con sus vistas, con Sp, y ahora con la ayuda de uds. Tambien son las FUNCIONES DEL SQLSERVER.

El problema que se me ha presentado es la conexión remota.

El software original se conecta usando un archivo XML que es el siguente, por cuestión de seguridad tuve cambiar el IP de servidor

Trate de conectarme de todas la formas y no me puedo conectar.

La pregunta es, como puedo utilizar este archivo para conectarme a la base de datos desde VFP

 

El nombre del archivo es :

ClienteSistemas.exe.config

 

<?xml version="1.0" encoding="utf-8"?>

<configuration>

                <configSections>

                               <section name="appParams" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

                               <section name="enterpriselibrary.configurationSettings" type="System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

                </configSections>

                <appSettings> 

                               <add key=" Sistemas.AgenteServicio.ServicioSQLHelper.ServicioSQLHelper" value="http://199.80.30.26:90/Sistemas.ServicioAccesoDatos2/ServicioSQLHelper.asmx"/>

                               <add key="Sistemas.AgenteServicio.ServicioSQLXMLHelper.ServicioSQLXMLHelper" value="http://199.80.30.26:90/Sistemas.ServicioAccesoDatos2/ServicioSQLXMLHelper.asmx"/>

                               <add key="Sistemas.AgenteServicio.ServicioGeneradorID.ServicioGeneradorID" value="http://199.80.30.26:90/Sistemas.ServicioOperaciones2/ServicioGeneradorID.asmx"/>

                               <add key="Sistemas.AgenteServicio.ServicioOperacion.ServicioOperacion" value="http://199.80.30.26:90/Sistemas.ServicioOperaciones2/ServicioOperacion.asmx"/>

                               <add key="Sistemas.AgenteServicio.ServicioSeguridad.ServicioSeguridad" value="http://199.80.30.26:90/Sistemas.ServicioAccesoDatos2/ServicioSeguridad.asmx"/>

                               <add key="Sistemas.AgenteServicio.ServicioSQLHelperReportes.ServicioSQLHelper" value="http://199.80.30.26:90/Sistemas.ServicioAccesoDatos2/ServicioSQLHelper.asmx"/>

                </appSettings>

                <appParams>

                               <add key="Modo" value="Remoto"/>

                               <add key="ModoReportes" value="Remoto"/>                            

                               <add key="DirectorioReportes" value="D:\REPORTES"/>

                               <add key="Empresa" value="BDATOS"/>                          

                </appParams>

                <enterpriselibrary.configurationSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" applicationName="Soporte" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/configuration">

                               <configurationSections>

                                               <configurationSection xsi:type="ReadOnlyConfigurationSectionData" name="exceptionHandlingConfiguration" encrypt="false">

                                                               <storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="exceptionHandlingConfiguration.config" />

                                                               <dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">

                                                               <includeTypes />

                                                               </dataTransformer>

                                               </configurationSection>

                               </configurationSections>

                               <keyAlgorithmStorageProvider xsi:nil="true" />

                               <includeTypes />

                </enterpriselibrary.configurationSettings>

</configuration>

 

Analyzer

unread,
May 31, 2013, 12:19:27 PM5/31/13
to mundovis...@googlegroups.com
Amigo,

Solo por aquello de que algun conocedor de Vb.net te pueda ayudar en algo, te recuerdo el enlace del foro Vb.net latinoamerica.



Saludos!


--

Aaron varon

unread,
May 31, 2013, 12:27:24 PM5/31/13
to Mundo Visual FoxPro
Estimado Edgar, también tienes que configurar que tu servidor de base de datos SQL acepte conexiones remotas.
Pero mas apoyo te pueden dar en foros de vb.net

Alex Orihuela Rosales

unread,
May 31, 2013, 12:40:29 PM5/31/13
to mundovis...@googlegroups.com
Así es, adicionalmente a esto, lo que hago es no permitir que un usuario se "loguee" al sistema por medio de un usuario sql como el "sa" sino por una autentificación de windows (usuario de red), es decir por la red, de esa forma siempre se sabe que máquina y usuario de sistema realizó una acción en la base de datos.
Saludos
Alex.

Edgar Barron

unread,
May 31, 2013, 12:58:32 PM5/31/13
to mundovis...@googlegroups.com

Hola

A TODOS

 

LA BASE DE DATOS DE SQLSERVER ESTA CONFIGURADO REMOTAMENTE, SE PUEDEN CONECTAR DE LAS SUCURSALES.

El sistema que estoy implementando (VFP), va trabajar paralelamente con el otro sistema que esta en vb.net

Utilizando el  sistema .Net me conecto remotamente, pero cuando lo quiero hacer desde VFP no se puede. Pero localmente si podemos trabajar sin ningún problema.

La pregunta que les hacia como puedo utilizar el archivo XML para conectarme.

La otra forma seria utilizando TERMINAL SERVER

 

 

De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Aaron varon

 

 


Enviado el: viernes, 31 de mayo de 2013 11:27 a.m.
Para: Mundo Visual FoxPro
Asunto: Re: [Mundo Visual FoxPro] conectar remotamente a sqlserver2005

Reply all
Reply to author
Forward
0 new messages