Um conhecimento só é válido quando compartilhado.

segunda-feira, 5 de julho de 2010

Add-in do TortoiseSVN para Delphi

Pelas minhas caminhadas pela NET, encontrei um plugin do TortoiseSVN, para Delphi no link DelphiSVN, baixei para testá-lo, e a primeira impressão gostei, mas como já havia trabalhado com StarTeam do Borland em equipe, logo observei que o plugin não permitia bloquear e desbloquear os .pas e .dfm, que estava usando, para que outro da equipe pudesse saber que os arquivos estavam sendo usados, mas que o recurso existia no
TortoiseSVN. Como sempre nada é perfeito.

Recursos oferecidos pela cópia original, que se encontra no link passado acima.

Bom, como o fonte estava em minhas mãos, resolvi dar uma olhada para saber como foi implementado os recursos, e após ter entendido, o que eu precisa era saber o comando do TortoiseSVN, que me proporcionasse, ter esses recursos. Então comecei a ler os manuais, mas não achei uma forma simples, pois os comandos de bloquear e desbloquear tem, mas não estava conseguindo fazer da mesma forma que o TortoiseSVN faz no explorer, que é mostrar a opção do menu "Release lock", somente se o arquivo realmente estivesse bloqueado e vice versa, mas não desisti. Após várias pesquisas, me vaio a mente, que o recurso não deveria ser simples, pois se fosse no site original, o autor do plugins já o teria feito, pois esses recurso é de muita utilidade, e nesse momento sim, pensei em desistir.

Foi ai, que me veio uma idéia, de ter um arquivo de controle, e iria gerar esse arquivo ao broquear um .pas, o qual deveria automaticamente bloquear também sei .dfm, se o mesmo existisse, então o comando “Get lock...” ao ser executado, relacionaria os nomes desse .pas e .dfm, os gravando no arquivo e o plugin identificando esse arquivo, iria mudar o label do comando e “Get lock...” para “Release lock”, e foi assim encontrei a solução, ficando assim os recursos após a implementação:

Onde baixar:
O plugins modificado, poderá ser baixado em DelphiSVN

Instalando:
Abra o pacote .dpk, compila-lo e o instale.

Arquivo gerado pelo plugin:
<Nome do projeto>.svn







Abraço a todos.

segunda-feira, 14 de junho de 2010

GetTableNames do DBX com MSSQL Server

Olá a todos, isso aconteceu comigo.

Bem aperfeiçoei uma ferramenta, feita em Delphi que achei na NET, esta Le o metadata do banco de dados, especificamente a lista de tabelas, a qual eu seleciono uma das tabelas da lista, para gerar uma class da estrutura da mesma. Para Interbase, Firebird e MySQL, sempre funcionou 100%, (no momento uso D2010), mas para SQL Server, não trazia a lista de tabelas, mas também não dava erro, então decidi debugar, para saber o que estava acontecendo, foi dai que descobri que para MSSQL, precisaria do "SchemaName", como o método tem overload, passei a chamar método que pudesse passar para ele o nome do schema somente para o banco MSSQL.

Para Interbase, Firebird e MySQL chamo:
SQLConnection.GetTableNames(varList, false)

Para MSSQL, passei a chamar:
SQLConnection.GetTableNames(varList, 'dbo', false)

Assim, resolvi meu problema e agora está funcionando 100% para os bancos que quero.

Este foi um relato, de um acontecimento comigo, passando assim a solução de como resolvi, para que outras pessoas, se passarem pelo mesmo problema, tenha uma fonte de pesquisa para resolvê-la.

domingo, 14 de março de 2010

Firebird - UPDATE OR INSERT INTO

Um dia desse desenvolvendo meu PAF, que usa Firebird, abri o IBExpert para gerar um script de insert, la eu vi que tinha uma opção chamada "UPDATE OR INSERT INTO", com essa opção selecionada, as colunas e a chave primaria marcada recebi um script da seguinte forma:
UPDATE OR INSERT INTO B01_FON (B01_BANCO, B01_NOME)
                       VALUES ('001', 'BRASIL S/A')
                     MATCHING (B01_BANCO);
Me Restava descobrir se essa sintaxe, ia funcionar executando dentro de delphi, e para mimha surpresa funcionou 100%, ou seja está ai uma maneira MUITO facil de se fazer sincronismo de dados no Firebird, pois executando esse Script o firebird checa pelo campo chave que está em MATCHING (B01_BANCO) (caso tenha mais campos na chave primária, basta separar por virgula), se não existir essa chave ele executa o INSERT, e se existir ele executa o UPDATE comparando a diferença campo a campo, que não pertença a chave primaria.

Abs

SAC Automação Delphi e Lazarus

SAC Automação Delphi e Lazarus
Assine nosso SAC Automação Delphi e Lazarus para ter suporte técnico especializado em desenvolvimento

Quem sou eu

Minha foto

Proprietário/Administrador de Empresa em TI (Tecsis Informática)
  • Autor dos projetos OpenSource ORMBr, e DBCBr
  • Autor dos componentes ACBrInstall, ACBrSped, ACBrPaf, ACBrInStore, ACBrDownload.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores

Google+ Seguindores