sexta-feira, 21 de novembro de 2014

Missing Data Provider or Data Packet

Ontem um colaborador nosso ficou emperrado em um método para copiar dados de uma tabela 'A' de um banco origem para um banco destino usando o trio SQLQuery + DataSetProvider + ClientDataSet.

O metodo estava assim

procedure TForm1.CopiarDados(Origem, Destino: TSQLConnection;  NomeTabela: String);
Var
    QryOrigem, QryDestino: TSQLQuery;
    DtStPrvd : TDataSetProvider;
    CDS  : TClientDataSet;
begin
  QryOrigem := TSQLQuery.Create(nil);
  QryDestino := TSQLQuery.Create(nil);

  QryOrigem.SQLConnection := Origem;
  QryDestino.SQLConnection := Destino;

  DtStPrvd := TDataSetProvider.Create(nil)
  DtStPrvd.Name := 'DT';
  DTStPrvd.DataSet := Qry_Destino;

  CDS := TClientDataSet.Create(nil);
  CDS.PacketRecords := 1;
  CDS.ProviderName := DtStPrvd.Name;

  CDS.Open;   // Ao executar o open esta dando a mensagem 'Missing Data Provider or Data Packet '

  CDS.Free;
  DataSetProvider1.Free;
  QryOrigem.Free;
  QryDestino.Free;

end;

O erro estava na atribuicao do provider para o ClientDataSet. Para atribuir um provider em tempo de execucao para um ClientDataSet tem que usar o metodo SetProvider do ClientDataSet, ficando assim

CDS.SetProvider (DT);

Desta forma o Open do ClientDataSet funciona sem problema algum.








    
    



sexta-feira, 14 de novembro de 2014

Procurar um arquivo no Tablet/SmartPhone Android com o adb shell

Ontem (13/11/2014) precisava exportar todos os arquivos de uma pasta que estava dentro do tablet. Fiz um root para poder acessar o tablet via USB e para meu desespero estava impossível de achar a pasta com os seus respectivos arquivos. Tentei utilizar o find já que Android é um linux, mas não deu certo. Depois de algumas pesquisas encontrei na stackoverflow.com a solução para o meu problema.

No prompt de comando, na pasta onde está o adb.exe executei o comando abaixo;

adb shell ls -R / > ListaArquivos.Txt

Com esse comando foi criado um arquivo texto com o nome ListaArquivos.txt conforme abaixo

./mnt/sdcard/Ringtones:
hangout_ringtone.ogg
hangouts_incoming_call.ogg
hangouts_message.ogg
hangouts_video_call.ogg

(arquivo parcial)

Depois com essa informação foi só fazer um arquvo .bat para fazer a copia

Copiar.Bat

adb pull /mnt/sdcard/Ringtones/hangout_ringtone.ogg  c:\temp
adb pull /mnt/sdcard/Ringtones/hangouts_incoming_call.ogg c:\temp
adb pull /mnt/sdcard/Ringtones/hangouts_message.ogg c:\temp
adb pull /mnt/sdcard/Ringtones/hangouts_video_call.ogg c:\temp


Uma outra solução seria
adb pull  /mnt/sdcard/Ringtones/  # Copia todos os arquivos da pasta (a pasta tem que terminar com '/' )

Até mais.


terça-feira, 19 de agosto de 2014

Configurar o Firebird para funcionar com PHP através do PDO

Após muita pesquisa e testes finalmente consegui acessar o firebird com php, usando o Bitnami Stack WAMP no Windows 8.1. De tanta coisa que foi feita, não sei qual foi a que realmente funcionou, mas vamos lá.

  1. Habilitar as extensões do firebird no php.ini
    Nas linhas onde está escrito ";extension=php_interbase.dll" e ";extension=php_pdo_firebird.dll", retire o ponto e vírgula do início.
  2. Copie os arquivos FbClient.dll e Gds32.dll para a  pasta \bin do apache. No meu computador ficou assim "C:\Bitnami\wampstack-5.4.31-0\apache2\bin".
  3. Para testar você pode usar o php.ini ou fazer o script abaixo
            foreach(PDO::getAvailableDrivers() as $driver) {
             echo $driver.'
    ';
    }
    ?>
    O resultado vai ser
    firebird
    mysql
    sqlite
Espero que este post ajude outras pessoas a conseguirem conectar com o Firebird.

pdo, pdo_firebird, php_interbase

terça-feira, 20 de maio de 2014

Criar TabSheet em tempo de execução

Para criar o TabSheet em tempo de execução no Delphi, proceder da seguinte forma.

procedure Form1.CriarTabSheet;
Var
    TS  : TTabSheet;

begin
  TS := TTabSheet.Create(PageControl);
  TS.Caption := 'Exemplo de Criacao de TabSheet em tempo de Execução';
  TS.PageControl := PageControl;
end;

domingo, 4 de maio de 2014

Instalação Aplicação DelphiXE com DBExpress

Para instalar uma aplicação do DelphiXE3 que utilize o DBExpress, ele necessita dos arquivos DLL dos drivers de conexão  e os arquivos dbxconnections.ini e dbxdrivers.ini. Esses arquivos devem ser copiados para a pasta onde está o executável.

As Dlls dos drivers de conexão estão na pasta Bin da instalação do delphi e os arquivos .ini estão na pasta \Documents\RAD Studio\dbExpress\10.0 (Caso seja XE3).