Ir para conteúdo
Fórum Script Brasil
  • 0

Delphi2009+dbExpress+SQL Server 2005


Polyanna Wenze

Pergunta

Olá..

Bom, estou começando a desenvolver um sistema usando o Delphi 2009 e o SQL Server 2005...

estou usando:

SQLDataSet

DataSetProvider

ClientDataSet

DataSource

Na propriedade DataSet do DataSetProvider, ponho o SQLDataSet..

Na propriedade ProviderName do ClientDataSet ponho o DataSetProvider..

e o DataSource eu ligo com o ClientDataSet..

No DataSetProvider, UpdateMode eu coloquei upWhereKeyOnly.

No Fields Editor, o providerFlags da chave primária ponho Where,Update e Key como True, e nos demais fields ponho só Update True..

No SQLDataSet uso o commandtype=ctTable, aí Insert, Update, Delete funcionam bacana...

Mas tipo, se eu colocar o commandtype=ctQuery e colocar uma sentença SQL, aí ele não consegue alterar, incluir..

Falta eu configurar alguma coisa quando eu colocar ctQuery no commandtype??

Grata

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Bom, vendo o link que você colocou e fazendo pesquisas, se eu for usar o commandtype=ctQuery, eu tenho que passar a instrução insert,update e delete por commandtext??

Ex: INSERT=insert into clientes ("nome","cpf") values ('teste','123.456.789-09'); <<- eu tenho que passar todos os parâmetros, isso??

Grata...

Link para o comentário
Compartilhar em outros sites

  • 0
Ex: INSERT=insert into clientes ("nome","cpf") values ('teste','123.456.789-09'); <<- eu tenho que passar todos os parâmetros, isso??

basicamente sim ... mas veja estes outros para ter uma melhor noção

http://www.estv.ipv.pt/PaginasPessoais/aja...RVER%202005.pdf

http://pgdocptbr.sourceforge.net/pg82/sql-insert.html

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Huuuummm, então eu tenho que 'pegar na mão do SQLDataSet', dizer que para inserir algum registro, o commandtext tem que ser 'INSERT INTO CLIENTES (?,?,?,?) VALUES (?,?,?,?)', onde passo os parâmetros que eu quero, igualmente no UPDATE e DELETE?

Poxa, queria que fosse como o MDO onde ponho a Query junto com o UpdateSQL, gero os SQL de INSERT,UPDATE,DELETE, ou no Zeos, onde simplesmente ponho um ZQuery e RequestLive=True?? :lol: :rolleyes:

Agradeço pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0
Poxa, queria que fosse como o MDO onde ponho a Query junto com o UpdateSQL, gero os SQL de INSERT,UPDATE,DELETE, ou no Zeos, onde simplesmente ponho um ZQuery e RequestLive=True??

Tambem pode.... só te mostrei uma outra maneira de se fazer

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá de novo..

Bom, este problema de início de utilização de novo componente consegui resolver, porém, estou com um outro problema, também com o ApplyUpdates..

Uso o SQLDataSet+DataSetProvider+ClientDataSet+DataSource...

SQLDataSet:

-CommandType=ctQuery;

-CommandType='SELECT * FROM PACIENTES ORDER BY NOME';

Bom, quando eu vou salvar alguma inserção/alteração de registro:

SQLDataSet.Insert;

SQLDataSet.FieldByName('teste').asString:='lalalalala';

SQLDataSet.Post;

SQLDataSet.ApplyUpdates(0); <<----- dá o erro aqi

Diz 'Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída'.

Então já mandaram eu colocar um SQLConnection.CloseDataSet em BeforeApplyUpdates do SQLDataSet. Aí ele salva, mas ele fechou o dataset, dando a mensagem de que 'Não pode executar esta operação porque o DataSet está fechado', porque o sistema vai fazer outra coisa depois que salva.

Aí eu li que era pra eu colocar um tal de Transaction, iniciar a transação antes de salvar a alteração/inserção, e depois dá o commit:

if SQLConnection.DSPacientes.State in [dsInsert,dsEdit] then

begin

TD.TransactionID := 1;

TD.IsolationLevel:=xilReadCommitted;

SQLConnection.StartTransaction(TD);

. passo os campos

. que serão salvos

.

CDSPacientes.Post;

CDSPacientes.ApplyUpdates(0); <<---- dá erro aqui tb

SQLConnection.Commit(TD);

end;

Aí dá a mesma msg de erro que deu no ApplyUpdates:

'Não é possível criar uma nova conexão porque o modo usado é o de transação manual ou distribuída'.

E se eu tirar o ApplyUpdates, ele não vai salvar nada no banco.. :blink:

E agora, quem poderá me ajudar??? :ninja:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...