Curso Firebird SQL 03 – Create table

A instrução CREATE TABLE é usada para criar uma tabela em um banco de dados.
As tabelas são organizadas em linhas e colunas; E cada tabela deve ter um nome.

Script exemplo:

— Criar tabela com chave primaria

create table grupo

(

gru_codigo dm_codigo,

gru_nome varchar(20),

primary key (gru_codigo)

);

CREATE TABLE CLIENTE

(

  CLI_CODIGO DM_CODIGO,

  CLI_NOME DM_NOME,

  CLI_DTNAS Date,

  CLI_CIDADE integer,  

  CONSTRAINT PK_CLI_CODIGO PRIMARY KEY (CLI_CODIGO)

);

 

Curso Firebird SQL 02 – Domínios

Neste vídeo mostro como trabalhar com Domínios para padronização dos campos das suas tabelas.

Script de Exemplo:

— criando dominio para padronização dos campos a 

–serem reaproveitados

create domain “DM_CODIGO” as integer not null;

create domain “DM_NOME” as varchar(30);

create domain “DM_DESCRICAO” as varchar(30);

create domain “DM_DTINCLUSAO” as timestamp default current_timestamp;

create domain “DM_VALOR” as numeric(8,2);

create domain “DM_QTDE” as numeric(8,3);


Compartilhar pastas e arquivos no Elementary OS

Neste vídeo vou mostrar como compartilhar pastas e arquivos através do terminal do Linux

Vídeo útil para quem não tem acesso ao modulo gráfico para instalação e configuração do samba.

Vou pastar os comandos do terminal aqui:

p { margin-bottom: 0.25cm; line-height: 120%; }

#Instalando Samba:
sudo apt-get install samba
samba-common
#Adicionando meu usuario ao
samba:
sudo smbpasswd -a danegd
#Fazendo Backup do smb.conf:
sudo cp /etc/samba/smb.conf
/etc/samba/smb.conf.old
#Editando smb.conf:
gedit /etc/samba/smb.conf

[Downloads]
comment = Downloads
path =
/home/danegd/Downloads/
guest ok = no
browseable = yes
create mask = 0600
directory mask = 0700
Iniciando / Parando servico
service smbd start/stop

Assista o vídeo:

Downgrade firmware HP Officejet Pro 8610

Sabemos que após uma atualização de firmware algumas impressoras HP não aceitam mais cartuchos compatíveis ou recarregados, ou seja, somente original. 
Passei por isso testei várias marcas de cartuchos compatíveis como Multilaser, Chinamate entre outras e sempre dava erro de cartucho não original, não compatível ou com problema.
Após pesquisar muito descobri a possibilidade de fazer o downgrade do firmware da impressora.
A versão meu firmware que bloqueava os cartuchos compatíveis ou recarregados era a FDP1CN1547AR.
Resolvi instalar a versão do firmware FDP1CN1416AR e realmente funcionou !
Isso mesmo, funcionou todos os cartuchos que não estavam funcionando.

## Alguém ou ALGUMA EMPRESA bloqueou o meu arquivo no MediaFire. 
Claro que deve quer alguém ou ALGUMA EMPRESA que está interessado em vender cartuchos originais.

Para não criar atrito com alguém, não subi o link novamente. Mas quem quiser, procure no google por:
downgrade firmware FDP1CN1416AR ##

 

# # # LEIA COM ATENÇÃO # # #
Faça por sua conta e risco !
Testado e funcionando na impressora HP Officejet Pro 8610 !
NÃO FUNCIONA COM CABO USB, Desconecte-o !
Só funciona se sua impressora estiver configurado na sua rede, pois a atualização é feita através do IP da impressora.

Não desconecte da rede enquanto estiver atualizando.

Não desligue sua impressora enquanto estiver atualizando.
Demora aproximadamente 10 minutos.
Vamos nessa, siga os passos abaixo:
No menu da impressora navegue até configurações.

Selecione a opção Configuração da Rede

Selecione o tipo de rede que você vai utilizar: Configuração Ethernet (com cabo) ou
Configuração sem fio (wi-fi)

Para conexão Ethernet (via cabo) conecte o cabo de rede na impressora e selecione Exibir detalhes Ethernet

Será exibido o Numero do IP, este numero será usado para fazer o downgrade do firmware. No exemplo ao lado o IP da “MINHA impressora” é 192.168.1.52
Anote o IP que aparecer nesta tela. Preste atenção para não anotar IP errado !

Se você utilizar conexão sem fio (wi-fi) selecione/ habilite opção “Sem fio”

 Selecione o nome da sua rede sem fio (do seu wi-fi)

Digite a senha para acesso da sua rede sem fio (do seu wi-fi) a mesma senha que você usa para conectar celulares ou computadores na sua rede.

Clique em exibir detalhes da rede sem fio.
Será exibido o Numero do IP, este numero será usado para fazer o
downgrade do firmware. No exemplo ao lado o IP da “MINHA impressora” é
192.168.1.51
Anote o IP que aparecer nesta tela. Preste atenção para não anotar IP errado !
Agora que você já anotou o numero do IP da sua impressora, vamos fazer download do firmware.
Abra o prompt de comando, navegue até a pasta que você descompactou, no meu exemplo descompactei os arquivos em C:HP8610, para acessar a pasta basta acessar o prompt de comando e digitar cdhp8610 e teclar ENTER.

Meu ip do wifi é 192.168.1.51 então o comando para atualizar a minha impressora é:

nc -w 192.168.1.51 9100 < farad_base_pp1_FDP1CN1416AR_nbx_signed.ful e tecle enter

Meu ip da ethernet é 192.168.1.52 então o comando para atualizar a minha impressora é:

nc -w 192.168.1.52 9100 < farad_base_pp1_FDP1CN1416AR_nbx_signed.ful e tecle enter
Sendo assim execute o comando trocando o NumeroDoSeuIP pelo número que você anotou:
nc -w NumeroDoSeuIP 9100 < farad_base_pp1_FDP1CN1416AR_nbx_signed.ful e tecle enter

Após alguns minutos vai aparecer uma tela verde no display da sua impressora. (não é imediatamente, então aguarde !).
Aguarde o término da atualização !
Prontinho ! pode usar os seus cartuchos !!!
Se funcionou para você, ajude a compartilhar para que todos possamos optar em usar cartuchos recarregados ou compatíveis ! 

Aprenda a programar impressoras térmicas de etiquetas PPLB

Para quem precisa imprimir em impressoras térmicas de etiquetas que utilizam a linguagem PPLB (Zebra, Argox, Elgin, etc), segue algumas dicas.

Vamos ver o lay-out da impressão de uma linha com 3 colunas:

N
D20
S3
A810,160,2,1,1,1,N,”Torta de Frango”
A810,140,2,3,1,1,N,”000132″
A810,115,2,3,1,1,N,”R$       3,90″
B570,020,0,2,3,5,65,N,”000132″

A540,160,2,1,1,1,N,”Sabonete Liquido”
A540,140,2,3,1,1,N,”001021″
A540,115,2,3,1,1,N,”R$       2,20″
B310,020,0,2,3,5,65,N,”01021″

A260,160,2,1,1,1,N,”Adaptador de Tomada”
A260,140,2,3,1,1,N,”006352″
A260,115,2,3,1,1,N,”R$       1,80″
B030,020,0,2,3,5,65,N,”006352″
P1

Vamos comentar para facilitar a interpretação:


N = Limpeza do Buffer
D20 = Densidade 20
S3 = Velocidade de impressão pol/segundos

Ap1,p2,p2,p3,p4,p5,p6,p7,”Dados” (veja tabela abaixo – Texto)
A810,160,2,1,1,1,N,”Torta de Frango”
A810,140,2,3,1,1,N,”000132″
A810,115,2,3,1,1,N,”R$       3,90″ 

Bp1,p2,p2,p3,p4,p5,p6,p7,”Dados” (veja tabela abaixo – Barras)
B570,020,0,2,3,5,65,N,”000132″

P1 = determina a quantidade de cópias, 1 até 65.535

A – Campo de texto
Ap1,p2,p3,p4,p5,p6,p7,”Dados”
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de fonte (1 a 5) consultar manual das fontes disponíveis
p5 – multiplicador horizontal das fontes
p6 – multiplicador vertical das fontes
p7 – N=imagem normal, ou R= imagem em reverso
“Dados” – dados a serem impressos

B – Código de barras
Bp1,p2,p3,p4,p5,p6,p7,p8,”Dados”
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de código de barra consultar manual das fontes disponíveis
p5 – largura da barra estreita
p6 – largura da barra larga
p7 – altura do código de barras em pontos
p8 – impressão da linha de interpretação (B= sim, N= não)

“Dados” – dados a serem impressos
Agora que você já entendeu, vamos ver como vai ficar em Lazarus ou Delphi:

procedure TFormEtqL42.BtnImprimeETQ;
var
F : TextFile;
i : integer;
begin
   IF cPortaBARRAS = ” then
      begin
        ShowMessage(‘Verifique a configuração da porta da impressora de etiqueta’);
        Exit;
      end;
   AssignFile(F,cPortaBARRAS);
   Rewrite(F);
   i := 0;
   TabGlobal.DETQ001.Last;
   TabGlobal.DETQ001.First;
   while not TabGlobal.DETQ001.eof do
      begin
         Writeln(F,’N’);
         Writeln(F,’D20′);
         Writeln(F,’S3′);
         // Etiqueta 1
         Writeln(F,’A810,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
         Writeln(F,’A810,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
         Writeln(F,’A810,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
         Writeln(F,’B570,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
         // Etiqueta 2
         TabGlobal.DETQ001.Next;
         Writeln(F,’A540,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
         Writeln(F,’A540,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
         Writeln(F,’A540,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
         Writeln(F,’B310,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
         // Etiqueta 3
         TabGlobal.DETQ001.Next;
         Writeln(F,’A260,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
         Writeln(F,’A260,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
         Writeln(F,’A260,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
         Writeln(F,’B030,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
         TabGlobal.DETQ001.Next;
         Writeln(F,’P1′);
      end;
   CloseFile(F);
end;

Se gostou, compartilhe e ajude a divulgar meu trabalho. Obrigado!

* Créditos para parte do texto dos comandos para ArgoxBrasil

Antivirus Gratuitos 2016 – Instaladores Off Line

 
 Para aqueles que precisam fazer download de instaladores Off-line
deixo aqui alguns links de antivírus gratuitos 2016:
Avira Free Antivírus: clique aqui para download
Avast Free Antivírus: clique aqui para download

AVG Antivírus Free: clique aqui para download 32Bits
AVG Antivírus Free: clique aqui para download 64Bits 
Panda Cloud Antivírus Free: clique aqui para download

Aprenda Programar: função para retornar o valor de um campo auto-incremento

Recebi muitos e-mails de amigos inscritos no meu blog e no canal do youtube com perguntas:

Como saber o próximo número do auto-increment?
como recuperar último código de um auto-incremento ?
Como saber o próximo valor do auto incremento?

###### Clique no GOSTEI ! isso me ajuda muito ! #############

Neste vídeo vou mostrar como criar uma função para retornar o valor do campo auto incremento e como definir o valor do próximo incremento.

###### Função  #####

Uses db; // Declare USES DB


//Private ou Public
function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant):Variant;



        //Função:

function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant): Variant;
var
  vResultaAutoIncrimento : Variant; // resultado do incremento
  nQTD : Variant;   // Variável para próximo incremento
begin
  nQTD:=vAtribui; // atribuição a variavel nQTD o valor do próximo incremento obtido pelo parametro da funcao
  TabGlobal.SqlAutoInc.Close; // fecha Query
  TabGlobal.SqlAutoInc.sql.Clear; // limpa Query
  TabGlobal.SqlAutoInc.SQL.Add(‘Select Max(‘+cCampoAI+’) as nCocInc from ‘+cTabela); // escreve nova query com parametros recebido da funcao
  TabGlobal.SqlAutoInc.Open; // abre a nova query
  case TabGlobal.SqlAutoInc.Fields[0].DataType of
    ftSmallint, ftWord, ftInteger: // se o campo AI for SmallInt, Word ou Integer
      vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsInteger + nQtd;
    ftFloat, ftCurrency: // Se o campo for Float ou Currency
      vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsFloat + nQtd;
  end;
  TabGlobal.SqlAutoInc.Close; // fecha query
  Result := vResultaAutoIncrimento; // retornar o campo Resultado Auto INc
end;

###### Assista o vídeo #######