Duvidas Delphi7 X ADO X SQL SERVER 2000

19/09/2004

0

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


Responder

Posts

19/09/2004

Bon Jovi

Duvida 1)

--- 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.


Responder

20/09/2004

Arc

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?????


Responder

21/09/2004

Bon Jovi

ctQuery = cmdText.


Responder

21/09/2004

Arc

O ADODATASET não tem execsql ??????????


Responder

21/09/2004

Bon Jovi

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).


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar