FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Mon Aug 31, 2015 09:31 PM

Amigos foreros:

Tengo el reto de comunicar 2 terminales (PC) en una LAN, me explico, necesito
que cuando en una terminal terminen de registrar un nuevo pedido se env铆e un
mensaje (ALERT) a una terminal X avisando que ya hay un nuevo pedido.

Alguien que me tire una hebra para saber por donde jalar??

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Comunicar 2 terminales en una LAN
Posted: Mon Aug 31, 2015 09:46 PM

Armando buenas tardes
SOLO una idea
Crear una tabla en modo comartico con campos como
id_term
nom_term
mensaje
usuario
Leido

indexada por medio de id_terminal
donde se graba la factura o pedido
abres esa tabla y grabas
un registro con la informacion del terminal donde debe ser le铆do el nombre de tu terminal escribes el mensaje y en el otro terminal lo abres en base al id_term y lo muestras y eliminas ese registro o lo marcas como le铆do

Bueno solo es una idea
saludos
Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Comunicar 2 terminales en una LAN
Posted: Mon Aug 31, 2015 10:15 PM
Armando wrote:Amigos foreros:

Tengo el reto de comunicar 2 terminales (PC) en una LAN, me explico, necesito
que cuando en una terminal terminen de registrar un nuevo pedido se env铆e un
mensaje (ALERT) a una terminal X avisando que ya hay un nuevo pedido.

Alguien que me tire una hebra para saber por donde jalar??

Saludos


Antiguamente se utilizaba los comandos de Sistema Operativo net send y/o el comando msg
Tambien hay utilidades para esta funcionalidad, por ejemplo: http://www.zhornsoftware.co.uk/stickies/
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN
Posted: Mon Aug 31, 2015 10:41 PM

Amigos:

Wilson, gracias por la idea, aunque el problema que tengo es 驴C贸mo enviar
el mensaje a la otra terminal?

Crist贸bal:

Tambi茅n gracias por el tip, voy a leer m谩s a detalle la idea que me aportas, puede ser!

Recuerdo que alguna vez alguien del foro publico el c贸digo para conectar/chatear de PC
a PC, pero ahora que lo necesito no lo encuentro :roll:

Alguien m谩s con m谩s ideas?
Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN
Posted: Tue Sep 01, 2015 12:57 AM

Wilson:

D谩ndole vuelta a tu idea, con un peque帽o cambio, puede ser la soluci贸n.

El cambio ser铆a:

Crear un timer para que la opci贸n del usuario receptor, cada x tiempo, "vea"
si hay algo nuevo en la tabla abra un dialogo con la informaci贸n necesaria
permitiendo al usuario borrar el mensaje.

Creo que por ah铆 pueden ir los tiros. :)

Alguna otra idea?

Saludos al foro

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Comunicar 2 terminales en una LAN
Posted: Tue Sep 01, 2015 11:53 AM

mi estimado:

una vez descargue esos ejemplos, los voy a buscar y si los encuentro los publico, eran del foro de clipper hace muchos a帽os.

saludos.

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Comunicar 2 terminales en una LAN
Posted: Tue Sep 01, 2015 01:20 PM
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN
Posted: Tue Sep 01, 2015 01:35 PM

Tocayo Lagunas:

Muchas gracias por la intenci贸n. Karinha ya puso el link.

Karinha:

Muchas gracias por el link, ahora tengo mas opciones.

Grandioso foro.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN
Posted: Fri Sep 04, 2015 09:44 PM

Amigos:

Pues ya qued贸 resuelto el problema, la soluci贸n fue tomar
la idea de Wilson y con el Timer y algunos otros detalles ha
quedado resuelto mi problema.

Gracias a todos

Saludos foreros

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Fri Sep 04, 2015 09:52 PM

Armando muy bien !!!
Si compartes algo de codigo se agradece
saludos
Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Fri Sep 04, 2015 11:03 PM

Wilson:

Que parte del c贸digo te interesa?, uso ADO!

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Fri Sep 04, 2015 11:13 PM

La parte visual
y algo del proceso
gracias
Wilson
pd: Muy interesante seria crear una clase en base a tu codigo para separar componentes e ir generando una usable por todos, ya que por ejemplo yo trabajo con adsntx

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Fri Sep 04, 2015 11:29 PM
Wilson y amigos del foro:

La idea es que cuando una PC t茅rminal registra una nueva orden de fabricaci贸n,
el 谩rea de fabricaci贸n reciba un aviso inmediatamente.

Siguiendo tu idea, cree una tabla donde se registra n煤mero de orden, fecha y
hora de la nueva orden de fabricaci贸n.

Code (fw): Select all Collapse
聽 聽 聽 聽 聽 聽 // Agregamos la orden a los avisos
聽 聽 聽 聽 聽 聽 cCmdSql聽:= "INSERT INTO " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avisos " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "SET " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Ord = " + STR(oOrd:ORD,7,0) + "," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Rev = " + STR(oOrd:REV,2,0) + "," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Usu = 'Jesus A'," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Fde = '" + DTOS(DATE()) + "'," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Hde = '" + TIME() + "'," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avi_Lei = " + STR(0,1,0)


En el PRG main() puse un Timer para que cada x tiempo, en mi caso 5 minutos "vea" si hay
nuevos registros en la tabla AVISOS

Code (fw): Select all Collapse
STATIC FUNCTION Tiempo()
聽 聽 // 60,000 es igual a 1 minuto, se crea y se activa solo una vez
聽 聽 DEFINE TIMER oTimer OF oWindow INTERVAL 10000 ACTION Revisar()

聽 聽 oTimer:Activate()
RETURN(NIL)


FUNCTION Revisar()
聽 聽 LOCAL oRsAvi
聽 聽 LOCAL oDlg
聽 聽 LOCAL aGets聽:= ARRAY(03)
聽 聽 LOCAL oSays
聽 聽 LOCAL cSays
聽 聽 LOCAL oFont1
聽 聽 LOCAL oFont2

聽 聽 LOCAL nDiaDif聽 聽:= 0

聽 聽 LOCAL oAceptar

聽 聽 IF lVentana
聽 聽聽lVentana聽 聽 := (.F.)
聽 聽 聽 聽 oSays聽 聽聽 聽 := ARRAY(08)
聽 聽 聽 聽 cSays聽 聽聽 聽 := ARRAY(08)

聽 聽 聽 聽 TRY
聽 聽 聽 聽 聽 聽 oRsAvi:=聽 聽 TOleAuto():New("adodb.recordset")
聽 聽 聽 聽 CATCH oError
聽 聽 聽 聽 聽 聽 MsgStop( "No se ha podido crear el RECORDSET de MENSAJES !", oApp:cAplicacion)
聽 聽 聽 聽 聽 聽 ShowError(oError)
聽 聽 聽 聽 聽 聽 oRsAvi聽 :=聽 NIL
聽 聽 聽 聽 聽 聽 RETURN(.F.)
聽 聽 聽 聽 END

聽 聽 聽 聽 oRsAvi:CursorLocation聽 聽:= adUseClient
聽 聽 聽 聽 oRsAvi:LockType聽聽 聽 聽 聽 := adLockOptimistic
聽 聽 聽 聽 oRsAvi:CursorType聽 聽聽 聽 聽 聽 := adOpenDynamic
聽 聽 聽 聽 oRsAvi:Source聽 聽聽 聽 聽 聽 聽 聽 := "SELECT " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "* " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "FROM " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avisos " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "WHERE " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "! AVI_LEI"

聽 聽 聽 聽 oRsAvi:ActiveConnection(oApp:oCon)

聽 聽 聽 聽 TRY
聽 聽 聽 聽 聽 聽 oRsAvi:Open()
聽 聽 聽 聽 CATCH oError
聽 聽 聽 聽 聽 聽 MsgStop( "No se ha podido abrir el RECORDSET Mensajes !", oApp:cAplicacion)
聽 聽 聽 聽 聽 聽 ShowError(oError)
聽 聽 聽 聽 聽 聽 RETURN(.F.)
聽 聽 聽 聽 END

聽 聽 聽 聽 IF oRsAvi:BOF() .AND. oRsAvi:EOF()
聽 聽 聽 聽 聽 聽 RETURN(.T.)
聽 聽 聽 聽 ELSE
聽 聽 聽 聽 聽 聽 oRsAvi:MoveFirst()
聽 聽 聽 聽 聽 聽 DO WHILE ! oRsAvi:EOF()
聽 聽 聽 聽 聽 聽 聽 聽 nDiaDif := ROUND(DATE() - oRsAvi:Fields("AVI_FDE"):Value,0)

聽 聽 聽 聽 聽 聽 聽 聽 DO CASE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 CASE nDiaDif == 0
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cSays[01]聽 聽:= "Hoy:"
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 CASE nDiaDif == 1
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cSays[01]聽 聽:= "Ayer:"
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 CASE nDiaDif == 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cSays[01]聽 聽:= "Antier:"
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 OTHER
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cSays[01]聽 聽:= "El d铆a:"
聽 聽 聽 聽 聽 聽 聽 聽 ENDCASE
聽 聽 聽 聽 聽 聽 聽 聽 cSays[02]聽 聽:= DATE2TXT(oRsAvi:Fields("AVI_FDE"):Value)
聽 聽 聽 聽 聽 聽 聽 聽 cSays[03]聽 聽:= "A las"
聽 聽 聽 聽 聽 聽 聽 聽 cSays[04]聽 聽:= TIME()
聽 聽 聽 聽 聽 聽 聽 聽 cSays[05]聽 聽:= "Se registr贸 la nueva orden"
聽 聽 聽 聽 聽 聽 聽 聽 cSays[06]聽 聽:= TRANSFORM(oRsAvi:Fields("AVI_ORD"):Value,"@Z 9999999")
聽 聽 聽 聽 聽 聽 聽 聽 cSays[07]聽 聽:= "Rev:"
聽 聽 聽 聽 聽 聽 聽 聽 cSays[08]聽 聽:= TRANSFORM(oRsAvi:Fields("AVI_REV"):Value,"@ 99")

聽 聽 聽 聽 聽 聽 聽 聽 DEFINE FONT oFont1 NAME "Arial" SIZE 0,-12
聽 聽 聽 聽 聽 聽 聽 聽 DEFINE FONT oFont2 NAME "Arial" SIZE 0,-20 BOLD
聽 聽 聽 聽 聽 聽 聽 聽 DEFINE DIALOG oDlg RESOURCE "SndMsg" OF oWindow COLORS CLR_WHITE,RGB(060,097,145)

聽 聽 聽 聽 聽 聽聽聽 聽 REDEFINE SAY oSays[01] VAR cSays[01] ID 101 OF oDlg FONT oFont1;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)
聽 聽 聽 聽聽聽 聽 聽 聽 REDEFINE SAY oSays[02] VAR cSays[02] ID 102 OF oDlg FONT oFont2;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)
聽 聽 聽 聽聽聽 聽 聽 聽 REDEFINE SAY oSays[03] VAR cSays[03] ID 103 OF oDlg FONT oFont1;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)
聽 聽 聽 聽聽聽 聽 聽 聽 REDEFINE SAY oSays[04] VAR cSays[04] ID 104 OF oDlg FONT oFont2;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)
聽 聽 聽 聽聽聽 聽 聽 聽 REDEFINE SAY oSays[05] VAR cSays[05] ID 105 OF oDlg FONT oFont1;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 REDEFINE GET aGets[01] VAR oRsAvi:Fields("AVI_ORD"):Value ID 106 OF oDlg UPDATE;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 WHEN (.T.) .AND. (.F.) FONT oFont2;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PICTURE "@K 999999"
聽 聽 聽 聽聽聽 聽 聽 聽 REDEFINE SAY oSays[07] VAR cSays[07] ID 107 OF oDlg FONT oFont1;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 COLORS CLR_WHITE,RGB(060,097,145)

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 REDEFINE GET aGets[02] VAR oRsAvi:Fields("AVI_REV"):Value ID 108 OF oDlg UPDATE;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 WHEN (.T.) .AND. (.F.) FONT oFont2;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PICTURE "@K 99"

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 REDEFINE BUTTON oAceptar ID 901 OF oDlg UPDATE;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ACTION (UpdAvi(oRsAvi),oDlg:END())

聽 聽 聽 聽 聽 聽 聽 聽 ACTIVATE DIALOG oDlg ON INIT SetWindowPos( oDlg:hWnd, -1, 0, 0, 0, 0, 3 )
聽 聽 聽 聽 聽 聽 聽 聽 oRsAvi:MoveNext()
聽 聽 聽 聽 聽 聽 ENDDO
聽 聽 聽 聽 聽 聽 lVentana聽 聽 := (.T.)
聽 聽 聽 聽 ENDIF
聽 聽 ENDIF
RETURN(NIL)


/*
* --------------------------------------------------------------------------*
* --------------------------------------------------------------------------*
*/
FUNCTION UpdAvi(oRsAvi)
聽 聽 LOCAL cCmdSql聽 聽:= ""

聽 聽 cCmdSql聽:= "UPDATE " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "Avisos " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "SET " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AVI_LEI = ! AVI_LEI,"+;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AVI_FDL = '" + DTOS(DATE()) + "'," +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AVI_HDL = '" + TIME() + "' " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "WHERE " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AVI_ORD = " + STR(oRsAvi:Fields("AVI_ORD"):Value,7,0) + " " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AND " +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 "AVI_REV = " + STR(oRsAvi:Fields("AVI_REV"):Value,2,0)
聽 聽 TRY
聽 聽 聽 聽 oApp:oCon:Execute(cCmdSql)
聽 聽 CATCH oError
聽 聽 聽 聽 MsgInfo("No pude ejecutar el comando " + cCmdSql,oApp:cAplicacion)
聽 聽 聽 聽 RETURN(.F.)
聽 聽 END
RETURN(.T.)


Si hay registros nuevos son mostrados en un di谩logo ON TOP y espera respuesta del usuario
del 谩rea de producci贸n, cuando el usuario da clic sobre el bot贸n ENTERADO se actualiza la
tabla con fecha y hora en que se dio clic. Es muy simple.

Esta es la imagen
http://postimg.org/image/6cegtrckp/" alt="" loading="lazy">
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)
Posted: Sat Sep 05, 2015 01:32 AM

Armando
Muchas gracias
Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com

Continue the discussion