Duvidas Delphi7 X ADO X SQL SERVER 2000
Duvida 1)
Criei uma tabela de orcamentos e uma de codigos, neste ultimo consta o codorc(codigo do orcamento, que nesta tabela é um sequencial, na tabela orcamentos ele é char(6) para usar zeros a esquerda, exemplo 000002).
Gostaria de saber qual a melhor forma de incrementar este codigo.
Todos os campos da tela são edits comuns não os dbedits, e a geração do codigo, só devera acontecer qdo o usuario clicar no botão Salvar. Devo usar uma Stored Procedure ??? ou fazer isso em linha de codigo mesmo?
Estou usando TAOQuery e Sql Server 2000. Sistema rodando em rede.
Duvida 2)
Ja fiz uma busca referente a criptografia...., mas não cheguei a uma conclusão:
Gostaria de saber qual a forma mais simples e facil de criptografar e descriptografar uma senha dentro da tabela do sql server 2000.
Duvida 3)
Sei que ja postei uma duvida parecida, mas ainda não entendi quais as funções e como funcionam o ClientDataSet e o DataSetProvider com o ADO..
Duvida 4)
Tambem ja postei essa.
O que devo fazer para controlar o acesso aos dados em rede??? Se dois usuarios tentam acessar as mesmas informações ao mesmo tempo.
Grato
Criei uma tabela de orcamentos e uma de codigos, neste ultimo consta o codorc(codigo do orcamento, que nesta tabela é um sequencial, na tabela orcamentos ele é char(6) para usar zeros a esquerda, exemplo 000002).
Gostaria de saber qual a melhor forma de incrementar este codigo.
Todos os campos da tela são edits comuns não os dbedits, e a geração do codigo, só devera acontecer qdo o usuario clicar no botão Salvar. Devo usar uma Stored Procedure ??? ou fazer isso em linha de codigo mesmo?
Estou usando TAOQuery e Sql Server 2000. Sistema rodando em rede.
Duvida 2)
Ja fiz uma busca referente a criptografia...., mas não cheguei a uma conclusão:
Gostaria de saber qual a forma mais simples e facil de criptografar e descriptografar uma senha dentro da tabela do sql server 2000.
Duvida 3)
Sei que ja postei uma duvida parecida, mas ainda não entendi quais as funções e como funcionam o ClientDataSet e o DataSetProvider com o ADO..
Duvida 4)
Tambem ja postei essa.
O que devo fazer para controlar o acesso aos dados em rede??? Se dois usuarios tentam acessar as mesmas informações ao mesmo tempo.
Grato
Arc
Curtidas 0
Respostas
Bon Jovi
19/09/2004
Duvida 1)
--- Via linha de código mesmo:
--- Ou via IDENTITY, que torna o campo autoincremento:
Particularmente prefiro via código, chamando a funcao no evento BeforePost, verificando se o dataset está em modo de insercao.
Duvida 2)
Realmente irá encontrar muita coisa aqui no fórum. Um de vários tópicos encontrados:
http://delphiforum.icft.com.br/forum/viewtopic.php?t=13772&highlight=criptografia
Duvida 3)
Também encontrará muita coisa, mais direcionado para dbExpress, sendo q dá no mesmo o aprendizado. SQLDataSet é similar ao ADODataSet, SQLQuery é similar ao ADOQuery e SQLConnection é similar ao ADOConnection.
Um dos tópicos explicando, indicando até uma apostila:
http://delphiforum.icft.com.br/forum/viewtopic.php?t=51221&highlight=clientdataset+tdatasetprovider
Duvida 4)
Em que sentido? Qto a evitar ler sujeira (dados nao comitados) e evitar gravar num registro que esteja sendo gravado por outro usuario, com a conexão no modo ilReadCommitted/ilCursorStability o SQLServer já faz o travamento automático nas transações abertas.
--- Via linha de código mesmo:
unit Unit1; interface uses SysUtils, Classes, DB, ADODB; type TDataModule1 = class(TDataModule) ADOConnection1: TADOConnection; private { Private declarations } public { Public declarations } function NovoSeq(Tabela, Campo: string; Condicao: string): integer; overload; function NovoSeq(Tabela, Campo: string): integer; overload; end; implementation {$R *.dfm} function TDataModule1.NovoSeq(Tabela, Campo: string): integer; begin Result := NovoSeq(Tabela, Campo, ´´); end; function TDataModule1.NovoSeq(Tabela, Campo: string; Condicao: string): integer; var DataSet: TADODataSet; begin DataSet := TADODataSet.Create(nil); try if Condicao <> ´´ then Condicao := ´ WHERE ´ + Condicao; DataSet.Connection := Self.ADOConnection1; DataSet.Close; DataSet.CommandText := ´SELECT MAX(´ + Campo + ´) AS ULTIMO ´ + ´FROM ´ + Tabela + Condicao; DataSet.Open; if DataSet.FieldByName(´ULTIMO´).IsNull then Result := 1 else Result := DataSet.FieldByName(´ULTIMO´).AsInteger + 1; DataSet.Close; DataSet.Connection := nil; finally FreeAndNil(DataSet); end; end; end.
--- Ou via IDENTITY, que torna o campo autoincremento:
CREATE TABLE TESTE ( CAMPO INT IDENTITY NOT NULL, CAMPO2 VARCHAR(50), PRIMARY KEY (CAMPO) )
Particularmente prefiro via código, chamando a funcao no evento BeforePost, verificando se o dataset está em modo de insercao.
Duvida 2)
Realmente irá encontrar muita coisa aqui no fórum. Um de vários tópicos encontrados:
http://delphiforum.icft.com.br/forum/viewtopic.php?t=13772&highlight=criptografia
Duvida 3)
Também encontrará muita coisa, mais direcionado para dbExpress, sendo q dá no mesmo o aprendizado. SQLDataSet é similar ao ADODataSet, SQLQuery é similar ao ADOQuery e SQLConnection é similar ao ADOConnection.
Um dos tópicos explicando, indicando até uma apostila:
http://delphiforum.icft.com.br/forum/viewtopic.php?t=51221&highlight=clientdataset+tdatasetprovider
Duvida 4)
Em que sentido? Qto a evitar ler sujeira (dados nao comitados) e evitar gravar num registro que esteja sendo gravado por outro usuario, com a conexão no modo ilReadCommitted/ilCursorStability o SQLServer já faz o travamento automático nas transações abertas.
GOSTEI 0
Arc
19/09/2004
Em relação a apostila do DBExpress, eu baixei e achei bem interessante, só tenho uma duvida no componente SQLDataSet a propriedade CommandType aceita ctQuery, ctStoredProc e ctTable.
Agora no DataSet da paleta ADO os valores são outros: cmdText, cmdFile, cmdStoredProc, cmdTable, cmdTableDirect e cmdUnknown, qual o correspondente para ctQuery do DBExpress?????
Agora no DataSet da paleta ADO os valores são outros: cmdText, cmdFile, cmdStoredProc, cmdTable, cmdTableDirect e cmdUnknown, qual o correspondente para ctQuery do DBExpress?????
GOSTEI 0
Bon Jovi
19/09/2004
ctQuery = cmdText.
GOSTEI 0
Arc
19/09/2004
O ADODATASET não tem execsql ??????????
GOSTEI 0
Bon Jovi
19/09/2004
Ele nao. Mas vc pode usar diretamente o ADOConnection chamando o método Execute. Assim vc nem precisa criar DataSet pra executar comandos.
Outras alternativas sao ADOCommand (também .Execute) e ADOQuery (.ExecSQL).
Outras alternativas sao ADOCommand (também .Execute) e ADOQuery (.ExecSQL).
GOSTEI 0