IMPRESSAO APARTIR DE UM INSERT

TIAGO 16/09/2015 00:00:09
#451443
Pessoal tenho um sistema de vendas em c# no qual existe a impressao da venda pronta, agora fiz um em php onde o vendedor efetuara a venda mas ao efetuar a venda, deve imprimir automaticamente na empresa onde existe o sistema de vendas feito em c#, quero aproveitar a impressao que fiz em c#, para nao ter que fazer novamente em php, pensei em fazer uma rotina que verifica de tempo em tempo se existe uma nova venda no banco e dai imprimir, tipo assim a cada 10 segundos, vejo se existem uma nova venda com status de impressao true, e imprimo ela, essa e uma solucao que pensei, mas estou achando impropria pois o sistema tera que fazer select no banco de tempo em tempo, alguem sabe de outra solução, tipo quando houver insert no banco disparar a rotina no c#, andei pesquisando e nao vi nada assim, se alguem saber de algo assim, seria de grande ajuda, grato pela atenção. o banco é mysql.
TUNUSAT 16/09/2015 07:31:18
#451444
TIAGO,

Dá uma olhada nisso (não sei se ajuda):
============================================================================
MySQL – TRIGGERS
Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.
http://www.devmedia.com.br/mysql-triggers/8088

Citação:

O que é um TRIGGER?

Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular. Tais eventos são os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE. Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima irá dispará-lo, sendo que, para cada um, podemos definir apenas um TRIGGER. Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento. Veremos como definir o momento de atuação do TRIGGER mais à frente.


============================================================================
Exemplo de como criar uma trigger no Mysql
http://wiki.locaweb.com/pt-br/Exemplo_de_como_criar_uma_trigger_no_Mysql
============================================================================
Manipulação de triggers no MySQL
http://wiki.locaweb.com/pt-br/Manipula%C3%A7%C3%A3o_de_triggers_no_MySQL
============================================================================
MySQL Básico: Triggers
http://www.linhadecodigo.com.br/artigo/3567/mysql-basico-triggers.aspx
============================================================================
Como criar uma trigger mysql para dar baixa no estoque?
http://pt.stackoverflow.com/questions/22754/como-criar-uma-trigger-mysql-para-dar-baixa-no-estoque
============================================================================
MySQL - Triggers - Definição, Sintaxe e Criação - 44
https://www.youtube.com/watch?v=JOnkvqUaNOU
============================================================================
SQL Trigger(Gatilho)
http://blog.fabianobento.com.br/2010/09/mysql-trigger/

MySQL Trigger(Gatilho)

O que é um trigger ?

Trigger ou gatilho é uma função implementada a partir da versão 5.0.2 do MySQL.
Ele funciona associado a um evento do banco de dados, sempre que for executado uma instrução SQL, insert, delete ou update em determinada tabela o gatilho é disparado.

Criando um trigger

Sintaxe para criação de um trigger
CREATE TRIGGER nome_gatilho
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON tabela
FOR EACH ROW
triggered_statement


Tradução da sintaxe

Criar um gatilho com_esse_nome
BEFORE (antes) ou AFTER (depois) da ação na tabela
INSERT(sempre que uma nova linha é inserida) ou UPDATE (sempre que uma nova linha é atualizada) ou DELETE(sempre que uma linha é deletada)
ON tabela
FOR EACH ROW
INSERT tabela_arquivo (ID, data) VALUES (tab.ID, tab.DATA);

Observações:
Se você usar multiplas instrução dentro do seu trigger é necessário usar BEGIN e END para indicar o inicio e fim da instrução do trigger.
Lembrando que é necessário alterar o delimitador antes da execução do trigger pelo comando DELIMITER || e voltando para ;(ponto e virgula) usando DELIMITER ;

Para visualizar os triggers use o comando.
mysql> SHOW TRIGGERS;

Este post é um resumo sobre trigger, para saber mais visite a documentção oficial no link(inglês): http://dev.mysql.com/doc/refman/5.0/en/triggers.html
============================================================================

[Ô]Três triggers tristes comiam três pratos de trigo com tremoço.[Ô]

[][ô]s,
Tunusat.
TIAGO 16/09/2015 08:24:42
#451445
Citação:

:
TIAGO,

Dá uma olhada nisso (não sei se ajuda):
============================================================================
MySQL – TRIGGERS
Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.
http://www.devmedia.com.br/mysql-triggers/8088

O que é um TRIGGER?

Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular. Tais eventos são os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE. Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima irá dispará-lo, sendo que, para cada um, podemos definir apenas um TRIGGER. Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento. Veremos como definir o momento de atuação do TRIGGER mais à frente.
============================================================================
Exemplo de como criar uma trigger no Mysql
http://wiki.locaweb.com/pt-br/Exemplo_de_como_criar_uma_trigger_no_Mysql
============================================================================
Manipulação de triggers no MySQL
http://wiki.locaweb.com/pt-br/Manipula%C3%A7%C3%A3o_de_triggers_no_MySQL
============================================================================
MySQL Básico: Triggers
http://www.linhadecodigo.com.br/artigo/3567/mysql-basico-triggers.aspx
============================================================================
Como criar uma trigger mysql para dar baixa no estoque?
http://pt.stackoverflow.com/questions/22754/como-criar-uma-trigger-mysql-para-dar-baixa-no-estoque
============================================================================
MySQL - Triggers - Definição, Sintaxe e Criação - 44
https://www.youtube.com/watch?v=JOnkvqUaNOU
============================================================================
SQL Trigger(Gatilho)
http://blog.fabianobento.com.br/2010/09/mysql-trigger/

MySQL Trigger(Gatilho)

O que é um trigger ?

Trigger ou gatilho é uma função implementada a partir da versão 5.0.2 do MySQL.
Ele funciona associado a um evento do banco de dados, sempre que for executado uma instrução SQL, insert, delete ou update em determinada tabela o gatilho é disparado.

Criando um trigger

Sintaxe para criação de um trigger

CREATE TRIGGER nome_gatilho
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON tabela
FOR EACH ROW
triggered_statement


Tradução da sintaxe

Criar um gatilho com_esse_nome
BEFORE (antes) ou AFTER (depois) da ação na tabela
INSERT(sempre que uma nova linha é inserida) ou UPDATE (sempre que uma nova linha é atualizada) ou DELETE(sempre que uma linha é deletada)
ON tabela
FOR EACH ROW
INSERT tabela_arquivo (ID, data) VALUES (tab.ID, tab.DATA);

Observações:
Se você usar multiplas instrução dentro do seu trigger é necessário usar BEGIN e END para indicar o inicio e fim da instrução do trigger.
Lembrando que é necessário alterar o delimitador antes da execução do trigger pelo comando DELIMITER || e voltando para ;(ponto e virgula) usando DELIMITER ;

Para visualizar os triggers use o comando.
mysql> SHOW TRIGGERS;

Este post é um resumo sobre trigger, para saber mais visite a documentção oficial no link(inglês): http://dev.mysql.com/doc/refman/5.0/en/triggers.html
============================================================================

[Ô]Três triggers tristes comiam três pratos de trigo com tremoço.[Ô]

[][ô]s,
Tunusat.



Bom dia, entendi sobre as triggers, mas como apartir delas disparar uma rotina em c#, pelo que ententi, da para fazer outras rotinas apenas no banco, obrigado pela ajuda
TUNUSAT 16/09/2015 09:00:25
#451447
TIAGO,

Experimenta montar duas coisas:
- Uma [Ô]Trigger[Ô];
- Um [Ô]Event[Ô] com o [Ô]event_scheduler[Ô];

Verifica se dentro deles é possível disparar um executável externo (isso eu não sei se é possível fazer);

======================================================
QUICK TIPS: Habilitando e Entendendo Events no MySql – Parte 1
http://www.devmedia.com.br/quick-tips-habilitando-e-entendendo-events-no-mysql-parte-1/14018
======================================================
Artigo da SQL Magazine 40 - Agendamento de tarefas em MySQL
http://www.devmedia.com.br/artigo-da-sql-magazine-40-agendamento-de-tarefas-em-mysql/6979
======================================================
Como criar um evento ou event no MySQL?
http://www.uolhost.uol.com.br/faq/banco-de-dados/como-criar-um-evento-event-no-mysql.html#rmcl

Banco de Dados
Como criar um evento ou event no MySQL?
Abaixo seguem alguns exemplos de criação de [Ô]events[Ô] no MySQL:

CREATE EVENT 'Dropar tabela t'
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO DROP TABLE t;


Este evento fará com que o MySQL drope a tabela [Ô]t[Ô] 5 dias a contar do momento da criação do evento.

CREATE EVENT O_evento_principal
ON SCHEDULE AT TIMESTAMP [ô]2009-03-10 12:00:00[ô]
DO DROP TABLE t;


Este evento fara com que o MySQL drope a tabela [Ô]t[Ô] no dia 10 de março de 2009 às 12:00h.

ATENÇÃO:
é importante que, quando um evento é criado com a instrução [Ô]EVERY[Ô] diante do período, a tarefa será repetida SEMPRE no decorrer de um novo ciclo.

Uma instrução [Ô]EVERY YEAR/MONTH/WEEK/DAY/HOUR/MINUTE/SECOND[Ô] resulta em uma execução continua dentro de um ciclo ANUAL/MENSAL/SEMANAL/DIÁRIO/HORÀRIO/MINUTOS/SEGUNDOS.

Por exemplo:
CREATE EVENT e
ON SCHEDULE EVERY 1 YEAR
DO DROP TABLE t;


Este evento faz com que o MySQL execute um [Ô]drop[Ô] na tabela [Ô]t[Ô] a cada ano, considerando como tempo [Ô]zero[Ô] o momento da criação do evento
======================================================

E se a [Ô]Trigger[Ô] ou [Ô]Event[Ô] disparar uma [Ô]SP[Ô] ou [Ô]Function[Ô] que consegue disparar um executável externo?

======================================================
MySQL User Defined Functions
http://www.codeproject.com/Articles/15643/MySQL-User-Defined-Functions

CREATE [AGGREGATE] FUNCTION MyTest 
RETURNS [INTEGER|STRING|REAL|DECIMAL] SONAME the_libraries_exact_name

======================================================

[][ô]s,
Tunusat.
TUNUSAT 16/09/2015 12:00:51
#451459
TIAGO,

Perguntei a um colega de trabalho e ele me disse que no SQL Server é assim:
execute xp_cmdShell [ô]argumentos[ô]

==============================================
xp_cmdshell (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms175046.aspx
==============================================

Mas não sabe como é no MySQL...
... bom ... fuçando na teia achei isso:

==============================================
Solution to master..xp_cmdshell in mysql
http://forums.mysql.com/read.php?20,125653
==============================================
Levraging a shell from SQL injection
http://security.stackexchange.com/questions/6919/levraging-a-shell-from-sql-injection
==============================================
Equivalent of MySQL[ô]s SOURCE command to load a script for TSQL?
http://stackoverflow.com/questions/9677734/equivalent-of-mysqls-source-command-to-load-a-script-for-tsql

EXEC master..xp_cmdshell [ô]sqlcmd -S . -U user -P pass -d db -i [Ô]c:\src\bar.sql[Ô][ô];


DECLARE @sql NVARCHAR(MAX) = N[ô]sqlcmd -S [Ô][ô] + @@SERVERNAME + [ô][Ô] -E[ô]
+ [ô] -d db -i [Ô]c:\src\bar.sql[Ô][ô];

EXEC master..xp_cmdshell @sql;

==============================================

[][ô]s,
Tunusat.
GUIMORAES 16/09/2015 14:08:48
#451465
TIAGO

Não é mais fácil fazer em PHP? rsrsrs

Caso não seja, você pode criar um gerenciador que ficará fazendo a leitura de um arquivo xml em uma pasta, se este arquivo existir, você pode imprimir passando os dados gerados a partir do seu arquivo XML (O numero da sua venda, por exemplo).

Outro método é criar um Web Service para isto, referenciando o seu projeto com impressão, e ao receber os dados da venda, dispara a impressão do mesmo.

TUNUSAT 16/09/2015 14:22:51
#451466
GUIMORAES123,

Acho que em PHP não é legal, pois se precisar de manutenção é preciso trabalhar em cima de dois códigos diferentes que fazem a mesma coisa... se esquecer que existe ... já viu a encrenca...
Já o gerenciado é uma ideia bem legal. é possível de duas formas:
1 - Com um TIMER interno, mas precisa ser diparado manualmente ou quando iniciar o Windows;
2 - Usando-se o [Ô]Task Manager[Ô] (Gerenciador de Tarefas) do Windows.
O Web Service é super legal (https://pt.wikipedia.org/wiki/Web_service)!
Se precisar de um exemplo:
=======================================================
WCF - WINDOWS COMUNICATION FOUNDATION E REGEX C#
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9439
=======================================================

[][ô]s,
Tunusat.
GUIMORAES 16/09/2015 14:37:08
#451468
TUNUSAT

Realmente, existe uma redundância ao se fazer em PHP, mais se você levar em consideração que o Tiago fez em PHP, é porque ele irá manter o sistema em PHP, e por consequência, em algum momento, ele terá que fazer alterações e talvez criar novos relatórios. Se tivesse feito em asp.net...

A melhor maneira seria Web Service.

Criar um aplicativo que irá ficar gerenciando é uma boa escolha, mais o ideal é utilizar threads para gerenciar isto.
TUNUSAT 21/09/2015 09:38:31
#451617
GUIMORAES123,

Só PHP não concordo, mesmo o TIAGO gerenciando é trabalho dobrado desnecessário.
Suas outras duas ideias foram joia. Obrigado.
Você poderia exemplificar a mecânica do Web Service e dos Threads? Como funcionaria passo a passo?
Aposto que o TIAGO gostaria de saber.

Tenho um exemplo de Thread em VB.net... mas acho que é fácil passar para C#:
=======================================================
MULTITHREADING VB.NET
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9326

Montei com [Ô]Módule[Ô]...
=======================================================

Valew GUIMORAES123!

[][ô]s,
Tunusat.
Faça seu login para responder