Clarion - DDE

 
Vista:

DDE

Publicado por Martha (5 intervenciones) el 09/02/2009 19:29:08
Hola... tengo la siguiente procedimiento

Server=DDECLIENT('OtraAplicacion','io')
StatusMsg = 'inicial'
DISPLAY
SYSTEM{Prop:DDETimeOut} = 12000 !give it two minutes
DDEEXECUTE(Server,'[@GC;;;]')
DISPLAY

Funciona bien, manda la instruccion a la otra aplicacion para que grabe datos y lo hace.

Pero necesito recuperar datos de OtraAplicación e intento usar el dderead

DDEREAD(Client, DDE:auto, '[@GI;;;]', Data)

Pero nada, he visto la ayuda y en teoria se puede usar el evento OF EVENT:DDEdata, pero no sé cómo hacer para que se ejecute ese evento o que directamente me devuelva el dato en mi variable Data
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:DDE

Publicado por raxe (196 intervenciones) el 10/02/2009 08:39:49
Hola.

Aparentemente lo tienes bien. En la instrucción:
DDEREAD(Client, DDE:auto, '[@GI;;;]', Data)

¿Client es el canal ?

Deberias de tener algo como esto
DDEChannel = DDEClient('OtraAplicacion','io')
If Not DDEChannel
!Procedimiento si no lo encuentra
End

y luego lees los datos
DDEREAD(DDEChannel, DDE:auto, '[@GI;;;]', Data)

¿no?
Solo lo he usado para enviar datos a Excel. Espero que haberte ayudado.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DDE

Publicado por martha (5 intervenciones) el 10/02/2009 13:55:57
Gracias por responder....

Si tengo el canal, lo mas raro es que si uso ddeexecute, funciona, realiza la orden en OtraAplicación... pero el problema que el execute no me devuelve el dato en mi aplicación. y me está volviendo loca, porque no me da error, pero no me devuelve el dato. necesito recuperar un dato de OtraAplicación.

Server=DDECLIENT('OtraAplicacion','io')
IF NOT Client THEN
MESSAGE('no encuentra el cliente')
RETURN
END
StatusMsg = 'inicial'
DISPLAY
DDEEXECUTE(Server,'[@GC;;;]')
DISPLAY
DDECLOSE(Server)

esta instrucción me funciona perfectamente, hace que en el otro programa se genere una información y lagrave en su BD, ahora lo que necesito es poder usar el dderead o cualquier otra opción que me devuelva el dato en una variable.

De paso no sé mucho de Clarion...

Saludos, Martha.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:DDE

Publicado por raxe (196 intervenciones) el 10/02/2009 15:11:45
Hola. Solo use DDE para enviar datos a Excel, así que seguro y por lo que veo tienes mas idea que yo. Ha visto el ejemplo en la carpeta:
C63ExamplesResourceDDEDDEAPP.APP

En Import pone esto:
!DDEEXECUTE(Server,'[ImportAPP(MyTXA.TXA,MyAPP.APP,0,Replace)]')
Server=DDECLIENT('ClarionWin')
IF ~SERVER
RUN('C60EE')
IF ERRORCODE() !Enterprise Edition not installed
RUN('C60PE') !Try Professional Edition
END
END
StatusMsg = 'Attempting Import'
DISPLAY
SYSTEM{Prop:DDETimeOut} = 12000 !give it two minutes
DDEEXECUTE(Server,'[ImportAPP(MyApp.TXA,MyAPP.APP,0,Replace)]')
DO CheckDDEError
IF ~ERRORCODE()
?ActiveMessage{Prop:Text} = 'Clarion DDE Server Active'
StatusMsg = 'Application Imported'
ELSE
StatusMsg = 'Import Failed'
END
DISPLAY
DDECLOSE(Server)

Saldos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DDE

Publicado por Martha (5 intervenciones) el 10/02/2009 15:26:57
Si, ya vi, pero ahí solo tiene opciones con ddeexecute, en C:clarion6ExamplesSrcDDEDDECLT.CLW hay otro ejemplo. Tome esos datos, pero no consigo entrar al Event:ddedate.

Y tampoco sé como crear un ejecutable a partir del archivo DDECLT.CLW. queria correrlo, pero no sé como crear el .app. Tu sabes cómo puedo hacer eso??

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ejecutar DDECLT.CLW

Publicado por raxe (196 intervenciones) el 10/02/2009 18:04:35
Hola.

1. Abres clarion, pulsa el boton Pick y seleccionas Source, pulsas el boton open, le indicas la ruta hacia DDECLT.CLW y lo seleccionas.
2. Pinchas en Proyect, Set, y le indicas el camino a DDECLT.PRJ
3. Le das al boton compilar y ejecutar y ya esta.

Creo que también puedes hacerlo así

1. Abres clarion, pulsas el boton Pick y seleccionas Project, pulsas el boton open, le indicas la ruta a DDECLT.PRJ y lo seleccionas.
2. Le das al boton compilar y ejecutar y ya.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar DDECLT.CLW

Publicado por Martha (5 intervenciones) el 11/02/2009 13:45:13
Buen día... gracias por tu ayuda, ya conseguí compilar la ayuda, ahora la analizare y haré pruebas. Pero sabes ayer por la prisa tuve que hacer la conexión del DDE en Visual Basic, sacar el dato y grabarlo en un archivo. Luego mi sufriento fue poder leer ese archivo desde Clarion.

PEro ya me funciona, desde clarion ejecuto la aplicación de Visual Basic, quien toma,guarda el dato y se cierra. Luego clarion busca el archivo con el dato.

Pero me queda la gran duda de que tendría que poder usar el DDE directamente desde Clarion.

Como te comente recien que trabajo con Clarion, me gustaria poder seguir en contacto contigo, por si acaso mi correo es martica_c @ hotmail.com

Saludos, y gracias.

MArtha.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Ejecutar DDECLT.CLW

Publicado por raxe (196 intervenciones) el 11/02/2009 15:10:51
Hola Martha. Tuve que hacer un proyecto en visual basic, con clarion no se podia, pero a la hora de manejar bases de datos, no me gustaba el VB y las SQL's asi que use tablas de Access y el proyecto tiene una parte que va en VB y me rellena las tablas de access con informacion que yo luego leo desde Clarion y va de cine. Supuestamente tu podrias correr tu aplicacion en VB desde clarion y recibir un parametro de vuelta. Me explico, llamas a la aplicacion VB desde Clarion, esta devuelve un resultado y clarion toma ese dato. Esto nunca lo hice pero se supone que se puede hacer, con esto te ahorras escribir en un fichero. Otra opcion es generar un INI, haces que la app en VB genere un archivo INI con el dato, y luego lo lees desde clarion.
Yo llevo 20 años con Clarion, he visto muchas versiones, considero que todavia no se nada, todavia me sorprendo... así q en lo q pueda ayudarte cuenta conmigo.

Saludos,

Ricardo
Gijón, Asturias, España
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar DDECLT.CLW

Publicado por Martha (5 intervenciones) el 11/02/2009 16:15:16
La Aplicación en VB que use estaba grabando como archivo .txt. Pero no conseguía leer el dato. cree una tabla, en el diccionario, con el nombre del archivo y lo estoy usando como una tabla... tuve que grabar son ninguna extensión para que consiga tomar el dato. Tuve otro problema que me bloqueaba el archivo y la aplicación de VB no conseguía modificar el dato.

Ahora funciona, pero no sé si es una forma óptima, ese es el código:

Access:peso.Close ' Desbloquea el archivo para ejecutar Balanza.exe
run('balanza.exe')
access:peso.setopenmode(12h);relate:peso.open ' esto lo saque de la ayuda
clear(pes1:record) ' Esto no sé si es mi problema.
get(peso,1)
cos:pdtara=clip(PES1:pesoneto)
close(peso)
display
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar