Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
16 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 16 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

Tudo dá errado

3/2/2017, 16:50 por Douglas Pascini

Troquei de maquina, achei que seria uma boa, [Você precisa estar registrado e conectado para ver esta imagem.]  pois passei para uma maquina melhor.

Instalei o …

Comentários: 1

URGENTE - Instalação do aplicativo

24/1/2017, 08:51 por Douglas Pascini

Bom dia. Estou com um problema, ao fazer a instalação (colocar os arquivo) do aplicativo na …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 3

Estatísticas
Temos 7018 usuários registrados
O último usuário registrado atende pelo nome de Marcos Souza

Os nossos membros postaram um total de 21 mensagens em 12 assuntos

Comandos SQL's com Expressão Regular

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 4/5/2010, 23:09

Olá, pessoal!
Estou trabalhando num projeto onde precisarei validar alguns comandos SQL para dar procedimento.

Até o momento tenho conseguido algo para...

Comando INSERT:
Código:
^\s*insert\s+into\s+\w*\s*\(\s*([a-z_]+[0-9]*|[a-z_]+[0-9]*\s*,\s*[a-z_]+[0-9]*)+\s*\)\s+values\s*\(\s*(('[^']*'|[0-9-+.*/]*)|('[^']*'|[0-9-+.*/]*)\s*,\s*('[^']*'|[0-9-+.*/]+))*\s*\)\s*;\s*$

Comando UPDATE:
Código:
^update\s+\w+\s+set\s+\s*\w+\s*=\s*('[^']*'|\w+)\s*((\s*,\s*\w+\s*=\s*('[^']*'|\w+)\s*)*)?(\s+where\s+(\s*\w+\s*=\s*('[^']*'|\w+)\s*)((\s+(and|or)\s+\w+\s*=\s*('[^']*'|\w+)\s*)*)?)?;$

Porém estou tendo dificuldades pois estou começando trabalhar com Expressões Regulares agora.

Alguém poderia dar uma força?
As expressões que citei acima ainda estão com falhas.
Desde já, agradeço!


Última edição por Marcos Guedes em 15/5/2010, 17:46, editado 1 vez(es)

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por cabeludo em 5/5/2010, 09:28

Como diz o autor do livro Dominando Expressões Regulares (olhei o nome em casa):
Escrever expressões regulares é uma arte
Não domino tão a fundo para dizer que não dá, mas até onde conheço, não dá pra fazer o tratamento total apenas usando RegEx.
Por exemplo:
Código:
INSERT INTO 'T1' ('T3a', 'T3b', 'T3c') VALUES ('T5a', 'T5b', 'T5c');
A seguinte expressão pode ser o início da verificação:
Código:
^\s*INSERT\s*INTO\s*'?\w+'?\s*\(\s*('?\w+'?)(\s*,\s*'?\w+'?)*\s*\)\s*VALUES\s*\(('?\w+'?)(\s*,\s*'?\w+'?)*\)\s*;$
Se tentar passar o texto anterior, a regex vai dar ok.
Mas testemos o seguinte:
INSERT INTO 'T1' ('T3a') VALUES ('T5a', 'T5b', 'T5c');
Mesmo com o ok da regex, a sintaxe do comando está errada!
Agora, se eu considerar a primeira string, mas com a seguinte expressao:
Código:
^\s*INSERT\s*INTO\s*'?(\w+)'?\s*(\(\s*(?:'?\w+'?)(?:\s*,\s*'?\w+'?)*\s*\))\s*VALUES\s*(\((?:'?\w+'?)(?:\s*,\s*'?\w+'?)*\))\s*;$
Além do OK, tenho como retorno o seguinte:

  • T1
  • ('T3a', 'T3b', 'T3c')
  • ('T5a', 'T5b', 'T5c')

Ai sim, posso tratá-los de modo mais adequado.

O assunto é extenso e não pude prolongar mais, se agarrar, dá ideia!

cabeludo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 5/5/2010, 11:06

Mas no meu caso, estou querendo criar uma expressão para comandos "limitados".

No caso do INSERT, o padrão exigido é:
Código:
INSERT INTO nomeTabela(campo1, campo2, campo3...ect) VALUES ('valor1', 2.0, 3, etc);

UPDATE:
Código:
UPDATE nomeTabela SET campo1='valor1', campo2='valor2', campo3=3, campo4=4.0 WHERE campoy='valory' AND|OR campox='valorx';

DELETE:
Código:
DELETE FROM nomeTabela WHERE campoy='valory' AND|OR campox='valorx';

Com base nestas limitações, acredito que seja possível, mas estou tendo dificuldades.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por cabeludo em 5/5/2010, 13:03

Apenas focando no insert, não sei se tem jeito pra "contar" itens reconhecidos e comparar, na propria expressao...
Adotei a muito tempo o princípio de dividir para conquistar...
Eu utilizaria pelo menos duas expressoes para validar o insert...
A primeira é a que descrevi acima, outra seria pra separar os itens de INTO e de VALUE, depois comparando a quantidade...
Estou com o pensamento em C#, não sei se esse modo funcionaria bem/facil no FP...

cabeludo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 5/5/2010, 13:39

Foi o que fiz, fiz duas, porém postei a junção das duas funções.
Smile

Então eu quebro a string e comparo.
Até aí tudo bem, porém ainda não está muito forte.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 14/5/2010, 08:20

Pessoal, um dos modelos que precisarei para minha aplicação já consegui (eu acho...).
Caso alguém precise, aí está...

MODELO INSERT:
Código:
INSERT INTO nomeTabela (campo1, campo2, campo3) VALUES ('valo21', 'valor2', 0);
Obs.:Não importa a ordem dos valores. Aceita apenas números inteiros positivos.

Solução válida para minha aplicação:
Código:
^\s*insert\s+into\s+\w+\s*\(\s*\w+\s*((\s*,\s*\w+)?)+\s*\)\s*values\s*\(\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*\)\s*;\s*$

Para chegar a esta solução precisei quebrar o comando em algumas partes:

insert into nomeTabela(
Código:
^\s*insert\s+into\s+\w+\s*\(\s*$

campo1, campo2, campo3
Código:
^\s*\w+\s*((\s*,\s*\w+)?)+\s*$

) values (
Código:
^\s*\)\s*values\s*\(\s*$

'campo1', 'campo2', 0, 5, ''
Código:
^\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

);
Código:
^\s*\)\s*;\s*$




Se tiverem alguma dica que me ajude a melhorar esta expressão, agradeço.


Última edição por Marcos Guedes em 14/5/2010, 15:04, editado 2 vez(es)

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 14/5/2010, 11:08

MODELO INSERT:
Código:
INSERT INTO nomeTabela VALUES ('valo21', 'valor2', 0);

Obs.: Não importa a ordem dos valores. Aceita apenas números inteiros positivos.

Solução válida para minha aplicação:
Código:
^\s*insert\s+into\s+\w+\s+values\s*\(\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*\)\s*;\s*$

Para chegar a esta solução precisei quebrar o comando em algumas partes:

insert into nomeTabela values(
Código:
^\s*insert\s+into\s+\w+\s+values\s*\(\s*$

'campo1', 'campo2', 0, 5, ''
Código:
^\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

);
Código:
^\s*\)\s*;\s*$




Se tiverem alguma dica que me ajude a melhorar esta expressão, agradeço.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 15/5/2010, 17:11

MODELO UPDATE:
Código:
UPDATE nomeTabela SET campo1='valor1', campo2=0 WHERE (campo1='' AND campo2='') OR (campo3='valor3' AND campo4=10);

Obs.: A condição where não é obrigatório e a existência, ou não, de parênteses, deverá ser tratada a parte.

Solução válida para minha aplicação:
Código:
^\s*update\s+\w+\s+set\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*\w+\s*=\s*('[a-z-0-9.+-///*]*'|[0-9]+))?)+\s*(\s*where\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*)?\s*;\s*$

Para chegar a esta solução precisei quebrar o comando em algumas partes:

update nomeTabela set (
Código:
^\s*update\s+\w+\s+set\s+$

campo='', campo2=0
Código:
^\s*\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((,\s*\w+\s*=\s*('[a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

where
Código:
^\s*where\s+$

campo='' and campo=0 or campo=1 and campo='valor'
Código:
^\s*\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

;
Código:
^\s*;\s*$




Se tiverem alguma dica que me ajude a melhorar esta expressão, agradeço.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 15/5/2010, 17:25

MODELO DELETE:
Código:
delete from nomeTabela where campo='' or campo='' and campo='';

Obs.: A condição where não é obrigatório e a existência, ou não, de parênteses, deverá ser tratada a parte.

Solução válida para minha aplicação:
Código:
^\s*delete\s+from\s+\w+\s*(\s*where\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*)?\s*;\s*$

Para chegar a esta solução precisei quebrar o comando em algumas partes:

delete from nomeTabela
Código:
^\s*delete\s+from\s+\w+\s*$

where
Código:
^\s*where\s+$

campo='' and campo=0 or campo=1 and campo='valor'
Código:
^\s*\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

;
Código:
^\s*;\s*$




Se tiverem alguma dica que me ajude a melhorar esta expressão, agradeço.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 15/5/2010, 17:45

MODELO SELECT:
Código:
select campo, campo, campo from t1 where campo='' or campo='' and campo='';

Obs.: A condição where não é obrigatório e a existência, ou não, de parênteses, deverá ser tratada a parte.

Solução válida para minha aplicação:
Código:
^\s*select\s+(\*|\s*\w+\s*((\s*,\s*\w+)?)+)\s+\s*from\s+\w+(\s+where\s+\s*\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*)?\s*;\s*$

Para chegar a esta solução precisei quebrar o comando em algumas partes:

select
Código:
^\s*select\s+$

campo1, campo2, campo3 ou ( * )
Código:
^(\*|\s*\w+\s*((\s*,\s*\w+)?)+)\s+$

from nomeTabela
Código:
^\s*from\s+\w+\s+$

where
Código:
^\s*where\s+$

campo='' and campo=0 or campo=1 and campo='valor'
Código:
^\s*\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+)\s*((\s+(and|or)\s+\w+\s*=\s*('[\s*a-z-0-9.+-///*]*'|[0-9]+))?)+\s*$

;
Código:
^\s*;\s*$




Se tiverem alguma dica que me ajude a melhorar esta expressão, agradeço.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Comandos SQL's com Expressão Regular

Mensagem por Marcos Guedes em 15/5/2010, 17:49

Com isto, conclui minha necessidade.
Very Happy

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum