Fórum Executar Comando SQL #348356
01/11/2007
0
Bom não encontrei até agora o que preciso, se puderem me ajudar...
Estou a procura de um executador de comando via meu sistema.
Explicando melhor: Os usuários na empresa onde trabalho executam alguns comandos via o SQL Analyzer e eu acho isso muito perigoso pelo fato de não ter usuário e permissões. Ou seja, os usuários executam tudo com o usuário sa.
Gostaria de colocar tudo isso em meu sistema, mas não tenho idéia de onde começar, pois no query existe a possibilidade de se exibir grid e texto. Além do fato de o DbGrid não me trazer campo memo, e assim por diante.
Poderiam me ajudar?
Obrigado e aguardo resposta...
Tremonti
Curtir tópico
+ 0Posts
01/11/2007
Adriano Santos
O que exatamente precisa?
Tem uma edição da ClubeDelphi, 84, que tem um artigo meu falando sobre o assunto.
Abs
Gostei + 0
02/11/2007
Tremonti
executam porque precisam de novas rotinas no sistema, mas enquanto nao fica pronto, é executado via comando.
Exemplo, tirar relatório, alterar datas e assim vai...
Obrigado
Gostei + 0
02/11/2007
Adriano Santos
É perigoso deixar o usuário executar selects, updates, deletes e etc. Eu faria uma rotina mais travada para que o usuário não ficasse tão livre.
Tenho três sugestões:
[list:79617b2561]
[*:79617b2561]Se for para filtro tem uma série de vídeo-aulas do meu colega Paulo Quicoli mostrando como criar uma super-query. Uma janela com alguns ComboBoxes onde o usuário cria sua consulta.
A primeira vídeo-aula está nesse link, depois fica fácil encontrar as outras:
https://www.devmedia.com.br/articles/viewcomp.asp?comp=5286
[*:79617b2561]Se for pra fazer manutenção do sistema, incluindo campos, tabelas e etc, crie um programinha que lê um arquivo texto e executa automaticamente as linhas do mesmo. Na edição 84 da ClubeDelphi tem um artigo meu. Se precisar de ajuda estou no ar.
[*:79617b2561]E por último se realmente necessitar que o usuário faça a querie e execute, crie uma janela com um Memo. Ao clicar em determinado botão você dá um loop no Lines do Memo e manda executar cada linha no método ExecuteDirect do componente SQLConnection do DBExpress. Funciona que é uma beleza.
[/list:u:79617b2561]
Abs
Gostei + 0
02/11/2007
Tremonti
Necessito mesmo que os usuários executem queries.
A dificuldade está no fato de que usuários executam updates e outros usuários selects.
Preciso de uma rotina bem semelhante ao do query, onde aparecem os resultados na parte inferior da tela, sabe?
Obrigado
Gostei + 0
03/11/2007
Adriano Santos
Isso é moleza de fazer. Crie uma tela onde você terá:
[list:fa83f4da00]
1. Você vai precisar de, 1 Button, 1 Memo alTop, 1 DbGrid alClient, 1 SQLConnection, 1 SQLQuery, 1 DataSetProvider, 1 ClientDataSet e 1 DataSource
2. Ligue o SQLConnection a sua base de dados
3. Ligue o SQLQuery ao SQLConnection pela propriedade SQLConnection
4. O DataSetProvider é ligado ao SQLQuery pela propriedade DataSet
5. Conecte o ClientDataSet ao DataSetProvider pela propriedade ProviderName
6. Por último ligue o DataSource ao ClientDataSet e o DBGrid ao DataSource
[/list:u:fa83f4da00]
Para utilizar você vai fazer algo asim no evento onClick do Button:
procedure TForm1.Button1Click(Sender: TOject); begin if not SQLConnection.Connected then SQLConnection.Connected := True; with SQLQuery, ClientDataSet do begin Close; SQL.Clear; SQL.Assign(Memo1.Lines); ClientDataSet.FecthParams; ClientDataSet.Open; end; end;
Essa é uma forma bem simplificada, só pra você entender. Dá pra fazer muita coisa com esse esquema e aperfeiçoar ainda mais.
Abs
Gostei + 0
03/11/2007
Adriano Santos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)