Fórum Duvidas Delphi7 X ADO X SQL SERVER 2000 #251079
19/09/2004
0
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
Curtir tópico
+ 0Posts
19/09/2004
Bon Jovi
--- 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
20/09/2004
Arc
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
21/09/2004
Bon Jovi
Gostei + 0
21/09/2004
Arc
Gostei + 0
21/09/2004
Bon Jovi
Outras alternativas sao ADOCommand (também .Execute) e ADOQuery (.ExecSQL).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)