quinta-feira, 25 de agosto de 2011

Selecionando Registros

Pesquisar registro utilizando valores dos campos chave

Métodos são definidos para as coleções de banco de dados que retornam um registro ou registros com valores especificados de campos-chave.
O método get() toma um registro alvo como argumento e retorna um registro com os mesmos valores de campos-chave. Um registro (ou modelo) destacado é frequentemente utilizado como o registro de destino, os registros destacados e modelo. Valores de campos não-chave são ignoradas,e não precisa ser especificado no registro de destino.
Note que este método pode ter um vetor de valores como argumento, correspondentes aos valores dos campos-chave. Este é obsoleta, como os campos-chave de registros em bancos de dados externos ou conjuntos de dados externos não são, necessariamente, armazenado no início do registro.
No exemplo a seguir, a chave primária da tabela hotel é dada pelo campo nome, que tem uma string como valor:

MagikSF> hotel_tab << v.collection(:hotel)
a ds_collection(hotel)
MagikSF> r << hotel_tab.new_template_record()
record_template(hotel) 
MagikSF> r.name << "Acorn Guest House"
"Acorn Guest House" 
MagikSF> hotel_rec << hotel_tab.get(r)
hotel51:(Acorn Guest House) 
MagikSF> print(hotel_rec)
hotel51:
:name       "Acorn Guest House" 
:address1   "154 Chesterton Road" 
:address2   "Cambridge" 
:type       hotel_type(Guest House) 
:comments   unset 
:location   point:(gis_id(5233539,824113348,19026)) 
:annotation unset 
O método at() recebe uma lista de valores de campo chave como argumentose retorna o objeto de registro com os valores de campo chave, que não exige um registro de modelo para manter os valores-chave. No exemplo anterior, você poderia usar:
hotel_rec << hotel_tab.at("Acorn Guest House")

para recuperar o mesmo registro. Observe que at() com uma lista de valorespode ser usado com um banco de dados externo ou conjunto de dados externo, seja qual for a ordem dos campos armazenados.
O método all_at() recebe uma lista de valores de campo chave para especificar uma parte de uma chave primária, e retorna um conjunto seleto deregistros com chaves primárias correspondentes.

Usando predicados

Um predicado (Magik predicado é uma classe ou uma subclasse) é um objeto que pode testar um registro de banco de dados.
O método select() é definido para as classes de banco de dados de coleta e também para conjuntos RWO, o método utiliza um predicado como argumento e retorna uma coleção (classe select_collection) como resultado. A coleção resultante responde a todos os métodos de coleta de costume, mas não é armazenada explicitamente; seus elementos são derivados de sua coleção de destino e predicado quando necessário. Por exemplo:

MagikSF> v << ldp.dataset(:gis)
gis_ds_view(Gis)
MagikSF> roadworks << v.collection(:road_works)
a ds_collection(road_works) 
MagikSF> roadworks.size
12
MagikSF> pred1 << predicate.new(:status, :eq, "Current")
predicate:(status = "Current") 
MagikSF> result1 << roadworks.select(pred)
select_collection(on road_works) 
MagikSF> result1.size
3 

Predicado simples
O exemplo anterior mostra um predicado simples, criado com o operador :eq como um argumento para o método new (). Alternativamente, você pode usar o método eq () com dois argumentos, por exemplo:

pred1 << predicate.eq(:status, "Current")

Métodos similares são definidos em predicado para operadores, tais como :lt, :le, :gt and :ge.

Predicado parcial
Você pode usar um predicado de classe ou predicate_wild ou predicate_like para fazer comparações parciais em um campo, ou, alternativamente, usar métodos like() ou wild() no predicado.

  • predicate_wild e wild() usa * para corresponder a qualquer número de caracteres e “?” para corresponder a um único caractere. “\” É usado como um escape, para que “\*” corresponde a “*”.
  • predicate_like e like() usa as convenções de SQL para % para combinar com qualquer número de caracteres e _to coincidir com uma caractere

Por exemplo, qualquer um destes…

pred2 << predicate.like(:code_name, "rw1%")
pred2 << predicate.new(:code_name, :like, "rw1%")

…resulta em um predicado que seleciona todos os registros com o campo CODE_NAME iniciado por rw1

Predicado composto
Você pode combinar predicados usando as classes predicate_or ou predicate_and, ou alternativamente usando os métodos or() ou and() nos predicados. Estes métodos recebem dois predicados como argumentos.

Por exemplo, qualquer um destes…

pred3 << predicate_or.new(pred1, pred2)
pred3 << pred1.or(pred2)

…resulta em um predicado composto.

Predicados espaciais
Predicados espaciais são definidos para testar os campo geometricos de registros do banco de dados; para maiores informações verifique a seção 7 (Geometry) da documentação.

Predicados para juntar objetos
Predicados podem ser definidos como teste de objetos unidos do objeto corrente. Os métodos a seguir são usados quando um conjunto de objetos pode ser unido ao objeto de destino:

  • predicate.all() pega um campo unido como argumento de predicado; retorna o predicado que testou os registros unidos e retorna true se todos os campos unidos retornarem true para o predicado.
  • predicate.any() pega um campounido como argumento de predicado, retorna o predicado que testou os registros unidos e retorna true se qualquer campo unido retornar true para o predicado.
  • predicate.count() testa quantos registros unidos retornaram true para o predicado.

Por Exemplo, se parents é uma tabela de objetos pais com campos filhos unidos, e o objeto filho tem um campo gender.

  • Quantidade de pais cujos filhos são todos do sexo feminino:

pr_female << predicate.eq(:gender,"female")
pr_all << predicate.all(:children, pr_female)
parents.select(pr_all).size

  • Quantidade de pais com pelo menos um filho do sexo feminino:

pr_any << predicate.any(:children, pr_female)
parents.select(pr_any).size

  • Quantidade de pais com pelo menos dois filhos do sexo feminino:

pr_count << predicate_count.new(:children, pr_female, :|>|, 2)
parents.select(pr_count).size

O método predicate.navigate() é usado para juntar campos quando um único objeto está junto ao objeto pai.

Predicado personalizado
O método predicate.using () e predicate.on_field_using () tem um procedimento personalizado para testar um objeto ou um campo, este procedimento deve ter um único argumento e retornar verdadeiro ou falso. Note que os predicados personalizadoa não podem ser otimizados.

quarta-feira, 24 de agosto de 2011

Extrair tabelas e gravar em texto


Extraí todas as tabelas do banco e grava seus nomes em arquivo texto



#
# Extrair o nome das tabelas do banco
# e a quantidade de registros de cada 
# uma delas
#
_block
setvars()
out << external_text_output_stream.new("c:\extracao.txt")
_for x _over dbe.elements()
_loop
write (x.name," - Contendo ", x.size , " registros")
out.newline()
out.write(x.write_string, " - Contendo ", x.size , " registros")
_endloop
out.close()
_endblock
$

Excluindo registros de tabela a partir de arquivo texto

_block
_local ve << gis_program_manager.cached_dataset(:electric)
_local a_file << external_text_input_stream.new("c:\deletar.map")
_loop
_local a_line << a_file.get_line()
_if a_line _is _unset _then _leave _endif
a_fields << a_line.split_by("|")
# if record is chain/line or point/location
_if a_fields[1].write_string = "3" _orif
a_fields[1].write_string = "1"
_then
table_name << a_fields[2].as_symbol()
id << a_fields[3].as_number()
a_record << ve.collections[table_name].at(id)
_if a_record _isnt _unset
_then
write("deletando registro ",a_record)
a_record.delete()
_else
write("registro ",table_name.write_string," id: ",id.write_string," nao encontrado!")
_endif
_endif
_endloop
ve.commit()
write("commited!")
_endblock
$

Extraindo dados para arquivo texto utilizando SQL

##
# extrator de gis_obj_ids
##

_global get_gis_obj_ids << 
@ get_gis_obj_ids(path_name, sql)

_local out << external_text_output_stream.new(path_name)
_local rec << personal_select(sql)
_for i _over rec.elements()
_loop
_if i.gis_obj_id _isnt _unset
_then
out.newline()
out.write_string("gis_obj_id : ", i.gis_obj_id)
_endif
_endloop
_protection
out.close()
_endprotect
_endproc
$

terça-feira, 23 de agosto de 2011

Via HD Audio Deck

Demonstro abaixo como confiurar a saída de som pelo painel frontal e posterior pelo aplicativo
Entre em modo Expert clicando no botão Expert Mode
image
Se na tela abaixo aparecerem os controles FRONT e BACK então está a meio caminho andado, se apaecer apenas um deles não se preocupe, pois ele aparecerá depois de configurado. Certifique-se de que o botão Default Device esteja selecionado
image
Vamos agora as configurações avançadas.
Clique no botão image que se encontra na parte inferior direita da janela, na tela que se abrirá deixe os controles da forma abaixo
image
Depois disso selecione a aba Speaker Setting and Test
image
Nos controles abaixo selecione o botão conforme o tipo de caixas acústicas que você utiliza, uma configuração errada acarreta em perda de qualidade ou até a falta do aúdio
image
Nesta mesma tela, se selecionar o botão Speaker Fill o aúdio do painel posterior será desligado ficando apenas o aúdio do painel frontal
image
Clique no botão imagepara configurar as opções do auto falante e deixe os controles conforme a janela abaixo
image
Pronto, com isso o seu aúdio está configurado.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Olá pessoal, hoje, 24.02.2013, acabei de ter um outro problema com meu som no painel frontal do desktop, ocorria que o som estava muito abafado, muito baixo, e alguns tons não eram reproduzidos, após várias tentativas consegui resolver aumentando a distância entre os auto-falantes de forma lógica, verja abaixo:

Clique com o botão esquerdo do mouse no ícone auto-falantes, depois disso clique ainda com o botão esquerdo no Auto-falantes (VIA High Definition Audio)





















Após isso a janela de propriedades de Auto-falantes se abrirá, habilitei as opções abaixo e depois selecionei  Enable Room Correction, depois disso cliquei em More Settings

































Fiz a configuração da forma abaixo, e o som ficou muito bom.

Related Posts Plugin for WordPress, Blogger...