Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qua Jul 25, 2012 3:14 pm Assunto: preciso de ajuda com a função locate |
|
|
eu estou criando um banco de dados com delphi e estou tentando fazer o localizar funcionar mas a funcao locate nao estou conseguindo fazer funcionar, ela estah escrita assim
DM.SimpleDataSetempresa.Locate('NOMEDAEMPRESA',VarArrayOf([Edit1.Text]),[lopartialkey]);
ai o lopartialkey nao estah encontrando.. eu escrevi alguma coisa errada aqui nesta sintese vlw pela ajuda |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jul 25, 2012 3:27 pm Assunto: |
|
|
Boa tarde,
Não entendi muito bem a sua questão...
Está ocorrendo algum erro de compilação?
Ou quando você executa não está encontrando nada? Se for este caso, experimente desta forma:
Código: | DM.SimpleDataSetempresa.Locate('NOMEDAEMPRESA', VarArrayOf([Edit1.Text]), [loCaseInsensitive, loPartialKey]); |
Espero que ajude.
Editado pela última vez por imex em Ter Out 03, 2023 5:37 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qua Jul 25, 2012 3:33 pm Assunto: |
|
|
entao sabe quando aperta o ctrl + espaço e nem aparece o locase ou o lopartial dai estah dando erro na hora de compilar estah falando alguma biblioteca?? :S |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jul 25, 2012 3:51 pm Assunto: |
|
|
Verifique se as units DB e DBClient estão na clausula uses do seu form ou unit, e se não estiver, experimente adiciona-las.
Espero que ajude. |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qua Jul 25, 2012 4:04 pm Assunto: |
|
|
sim elas estao sim uses Principal, UDM;
estah mto estranho isto daqui =s |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qua Jul 25, 2012 4:11 pm Assunto: |
|
|
opa consegui vlw... era soh colocar o db msmo eu estava confundido q tinha q colocar o dm o data module nao o db.. oq seria este db uma biblioteca??? eu sou novo estou começando sozinho |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jul 25, 2012 4:39 pm Assunto: |
|
|
Sim, onde estão declaradas diversas classes, funções, tipos, sets e etc, entre os quais está TLocateOption, que define os valores aceitos para o parâmetro Options do método Locate. |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qui Jul 26, 2012 1:34 pm Assunto: |
|
|
outra duvida.. estou tentando usar o locate mas quando o campo eh inteiro eu nao estou conseguindo... estah dando erro estou usando assim como eu deveria usar??
dm.SimpleDataSetmedicao.Locate('numerodaobra',VarArrayOf([Edit1.Text]),[loPartialKey,loCaseInsensitive]) |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jul 26, 2012 4:02 pm Assunto: |
|
|
Qual mensagem de erro está sendo exibida?
Experimente utilizar a função StrToInt para converter o valor do edit para inteiro para ver o que acontece:
Código: | dm.SimpleDataSetmedicao.Locate('numerodaobra', VarArrayOf([StrToInt(Edit1.Text)]), [loPartialKey, loCaseInsensitive]); |
Espero que ajude. |
|
Voltar ao Topo |
|
|
gilsonnrodrigues Moderador
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Qui Jul 26, 2012 5:44 pm Assunto: |
|
|
pra q serve o VarArrayOf?
ah sim!
pra fazer um variant apartir de um array.
mas se vc vai e passa um array de um elemento, pq decidiu tratá-lo como array? e não como elemento?
poderia ser assim:
Código: | dm.SimpleDataSetmedicao.Locate('numerodaobra', StrToInt(Edit1.Text), [loPartialKey, loCaseInsensitive]); |
pera ai!
pq loCaseInsensitive? se StrToInt(Edit1.Text) é um integer?
vamos tentar novamente!
o campo numerodaobra é caracteres?
tente assim:
Código: | dm.SimpleDataSetmedicao.Locate('numerodaobra', Edit1.Text, [loPartialKey, loCaseInsensitive]);
|
|
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qui Jul 26, 2012 7:03 pm Assunto: |
|
|
nao o campo numerodaobra eh inteiro... tipo eu defini no sql como integer e é por isso q estah dando erro.. nos campos q estah como vararray funciona certinho... agora os q estah int estah dando erro ai nao consigu pesquisar lah =s |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Qui Jul 26, 2012 7:31 pm Assunto: |
|
|
opa acho q conseguir tirando o vararray e colocando a propriedade strtointdef(edit1.text,0) soh q agora eu queria mais uma ajuda... como eh q eu faço para quando ele pesquisa na tabela ele coloca em ordem alfabetica tem como?? |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jul 26, 2012 10:52 pm Assunto: |
|
|
Experimente preencher a propriedade IndexFieldNames do seu SimpleDataSet com o nome do campo pelo qual você deseja ordenar.
Se for ordenar por mais de um campo utilize um ponto e vírgula entre os nomes dos campos.
Espero que ajude. |
|
Voltar ao Topo |
|
|
gregorysouza Novato
Registrado: Quarta-Feira, 25 de Julho de 2012 Mensagens: 46
|
Enviada: Seg Jul 30, 2012 10:58 pm Assunto: |
|
|
entao eu queria filtar... deixar soh os campos que tem a palavra chave q eu estou pesquisando... tem como fazer isso?? |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Jul 30, 2012 11:26 pm Assunto: |
|
|
Acho que a primeira opção seria utilizar filtros na instrução SQL para tentar diminuir o trafego de dados entre o banco de dados e a aplicação.
Se for para filtrar no DataSet, experimente utilizar a propriedade Filter (ex para obter os registros em que o início do nome seja igual ao conteúdo do Edit):
Código: | SimpleDataSet1.Filtered := false;
SimpleDataSet1.Filter := 'Nome like ' + QuotedStr(EditFiltro.Text + '%');
SimpleDataSet1.Filtered := true; |
Espero que ajude. |
|
Voltar ao Topo |
|
|
|