Polyanna Wenze Postado Maio 25, 2009 Denunciar Share Postado Maio 25, 2009 Olá..Bom, estou começando a desenvolver um sistema usando o Delphi 2009 e o SQL Server 2005...estou usando:SQLDataSetDataSetProviderClientDataSetDataSourceNa 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 26, 2009 Denunciar Share Postado Maio 26, 2009 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??Leia este artigohttp://www.cpusoft.com.br/profmarcos/LPIII...ress_slides.pdfabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Polyanna Wenze Postado Maio 26, 2009 Autor Denunciar Share Postado Maio 26, 2009 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 26, 2009 Denunciar Share Postado Maio 26, 2009 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.pdfhttp://pgdocptbr.sourceforge.net/pg82/sql-insert.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Polyanna Wenze Postado Maio 26, 2009 Autor Denunciar Share Postado Maio 26, 2009 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 26, 2009 Denunciar Share Postado Maio 26, 2009 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 fazerabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Polyanna Wenze Postado Junho 9, 2009 Autor Denunciar Share Postado Junho 9, 2009 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 aqiDiz '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] thenbegin 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Polyanna Wenze
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
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.