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