Deixo aqui minhas anotações das aulas do prof. Ackermann, acredito que possam ser úteis, um primeiro post sobre isto já foi escrito e pode ser acessado aqui.
--- O QUE FAZER SE VOCE ESQUECEU DE CRIAR O CAMPO PRIMARY KEY E JÁ
INSERIU DADOS? cRIA O CAMPO PK E MANTÉM A CONSTRAINT DISABLE, INSERIR
OS VALORES NO NOVO CAMPO NOS REGISTROS JÁ INSERIDOS E DEPOIS PASSA A
CONSTRAINT PARA ENABLE, ATIVA ELA.
ALTER TABLE TABELA ADD CAMPOCHAVENOVO NUMBER(4) CONSTRAINT
TABELA_PK_CAMPOCHAVENOVO PRIMARY KEY DISABLE;
--- COMO EXCLUIR UMA TABELA
DROP TABLE TABELA;
--- REDO: GRAVAM FISICAMENTE OS REGISTROS, INSEREM NO BANCO E GRAVAM NO DISCO.
--- TRUNCATE LIMPA/EXCLUI REGISTROS DA TABELA, DELETE TAMBÉM FAZ ISSO
MAS ANTES ELE FAZ BKP E PODE-SE USAR ROLLBACK, JÁ O TRUNCATE LIMPA
TUDO E JÁ ERA.
---------------- COMANDOS ----------------------------------
- Criar novo usuário:
CREATE USER NOMEUSUARIO IDENTIFIED BY SENHAAQUI DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
- Dar permissões para este usuário se logar e criar tabela etc:
GRANT CONNECT, RESOURCE TO NOMEUSUARIO;
- Criar tabela:
CREATE TABLE TABELATESTE (CAMPONUMERO NUMBER, CAMPOTEXTO VARCHAR(50));
- Exluir tabela:
DROP TABLE TABELA;
- Deletar usuário:
DELETE FROM TABELA WHERE CAMPO = VALOR;
- Criar chave primária em tabela que já contem registros:
ALTER TABLE TABELA ADD CAMPOCHAVENOVO NUMBER(4) CONSTRAINT TABELA_PK_CAMPOCHAVENOVO PRIMARY KEY DISABLE;
- Inserir dados:
INSERT INTO TABELA VALUES (VALOR);
- Alterar dados:
UPDATE TABELA SET CAMPO=VALOR, CAMPO2=VALOR WHERE CAMPO3=VALOR;
- Listar tabelas criadas:
SELECT * FROM CAT;
- Listar dados da lixeira:
select object_name,original_name,type,ts_name from recyclebin;
- Ver lixeira:
SHOW RECYCLEBIN;- Recuperar tabela dropada da lixeira:
FLASHBACK TABLE NOMETABELA TO BEFORE DROP;
- Opções para limpar a Lixeira:
PURGE TABLE tablename; Tabela específica.
PURGE INDEX indexname; Índice específico.
PURGE TABLESPACE ts_name; Todas a tabelas de um tablespace.
PURGE TABLESPACE ts_name USER username; Idem para um usuário específico.
PURGE RECYCLEBIN; Apenas do usuário corrente.
PURGE DBA_RECYCLEBIN; Toda a Lixeira.
Dia 12/05
// LOGAR COM DBA, COMANDO MAIS SENHA USUARIO
CONNECT SYS AS SYSDBA
// PARAR BANCO, (O BD NAO PARA ENQUANTO TODOS NAO SE DESCONECTAREM)
SHUTDOWN
// PARAR BANCO SEM ROLLBACK, DEIXA PRA FAZER QUANDO INICIAR NOVAMENTE
SHUTDOWN ABORT
// PARAR BANCO JÁ COM ROLLBACK DOS COMANDOS NÃO "COMITADOS"
SHUTDOWN IMMEDIATE
// ARQUIVOS DO BANCO ESTÃO EM "C:\app\hardware\oradata"
// PRA FAZER BKP FRIO BASTA PARAR O BANCO E COPIAR OS ARQUIVOS DESTE DIRETÓRIO
// VOLTAR O BANCO
STARTUP
// PRA FAZER bkp quente, precisA dizer ANTES pra tabela que vai ser feito bkp com seguinteS comandoS
SELECT 'ALTER TABLESPACE 'TABLESPACE_NAME' BEGIN BACKUP' FROM DBA_TABLESPACES;
// EXEMPLO...
ALTER TABLESPACE SYSTEM BEGIN BACKUP;
// VAI PRO DIRETÓRIO E COPIA ARQUIVO DA TABELA, DEPOIS EXECUTA SQL ABAIXO PRA FINALIZAR BKP QUENTE
ALTER TABLESPACE SYSTEM END BACKUP;
// no final copia os redo log e control files
Dia 20/05/2010
exp - exportar dados no formato oracle
imp - importa o arquivo de formato oracle
NO CMD# DIGITE
exp help=yes
PARA OBTER AJUDA SOBRE O COMANDO EXP OU DIGITE
imp help=yes
PARA OBTER AJUDA SOBRE O IMP
exportar somente do usuário scott logando com usuario SYSTEM e senha SETREM
EXP USERID=SYSTEM/SETREM OWNER=SCOTT FILE=D:\SCOTT.DAT
exportar todo o banco e gravar LOG
EXP USERID=SYSTEM/SETREM FULL=Y FILE=D:\SCOTT.DAT LOG=D:\LOGFILEEXPFULL.TXT
importar o arquivo recém gerado do usuário scott para um novo usuário chamado jeronimo
IMP USERID=SYSTEM/SETREM FILE=D:\SCOTT.DAT FROMUSER=SCOTT TOUSER=JERONIMO
**OBSERVAÇÕES E **DICAS IMPORTANTES
Para executar import e export de outros usuários o usuário precisa ter atribuição de DBA.
Quando temos bancos de dados de diferentes owners e as tabelas destes bancos possuem relacionamentos pode-se importar sem criar os relacionamentos usando os seguintes parametros:
imp userid=bolivar/senha file=C:\bolivar.dat fromuser=bolivar touser=spock ignore=y constraints=no
e depois executar o import novamente com os seguintes parametros:
imp userid=bolivar/senha file=C:\bolivar.dat fromuser=bolivar touser=spock ignore=y constraints=yes rows=no
Na primeira vez vai importar sem os relacionamentos, na segunda vez vai importar apenas os relacionamentos e as linhas não, isso evita que de problemas na importação em casos que temos muitos usuários com tabelas que se relacionam e dependem uma das outras...
Bom pessoal, até hoje foi isso, quando tiver mais algumas anotações interessantes/básicas/úteis talvez eu escreva novamente.
Instalando componentes Rave Reports no Delphi
Primeiramente vá em Component->Install Packages.
Click ADD e vá até o diretório da figura abaixo, selecione o arquivo dclRave.bpl e clique abrir.
Vai importar o pacote e já vai aparecer marcado o pacote do Rave.
Os componetes vão aparecer no final da Tool Palete.
Para criar um relatório com Rave vai precisar de três componentes:
- RvProject: Responsável pela ligação entre o projeto Delphi e o projeto de relatórios Rave.
- RvDataSetConnection: Exporta um DataSet do projeto Delphi para o projeto Rave.
- RvSystem:Responsável pelo envio do relatório para a impressora ou para a tela de Preview.
Mas isto fica pra uma próxima. Até.
Click ADD e vá até o diretório da figura abaixo, selecione o arquivo dclRave.bpl e clique abrir.
Vai importar o pacote e já vai aparecer marcado o pacote do Rave.
Os componetes vão aparecer no final da Tool Palete.
Para criar um relatório com Rave vai precisar de três componentes:
- RvProject: Responsável pela ligação entre o projeto Delphi e o projeto de relatórios Rave.
- RvDataSetConnection: Exporta um DataSet do projeto Delphi para o projeto Rave.
- RvSystem:Responsável pelo envio do relatório para a impressora ou para a tela de Preview.
Mas isto fica pra uma próxima. Até.
Baskara Delphi
Programinha pra calcular Baskara no Delphi, tarefa de aula, vale compartilhar :D.
procedure TForm1.Button1Click(Sender: TObject); var A,B,C,D,R1,R2:double; begin try A := strtofloat(edta.Text); B := strtofloat(edtB.Text); C := strtofloat(edtC.Text); if A <> 0 then begin D := (B*B)-(4*A*C); if D >= 0 then begin R1 := ((-1*B)+SQRT(D))/(2*A); R2 := ((-1*B)-SQRT(D))/(2*A); EDTR.Text := FloatToStr(R1); EDTR2.Text := FloatToStr(R2); { // exibir resultado em outro form final.Edit1.Text := FloatToStr(R1); final.Show; } end else begin ShowMessage('Erro na operação!! Delta menor que zero.'); end; end else begin ShowMessage('Valor de A deve ser diferente de zero (0).'); end; except on e:exception do ShowMessage(e.message); end; end;
Criação de um Sistema no Delphi com Firebird
Olá, após um bom período de férias, as aulas da faculdade estão de volta e me lembrei que ficou tarefa do semestre passado pra fazer aqui no blog, mostrar como fazer um sistema utilizando Firebird no Delphi, rapidamente vou explicar como fazer uma tela de manutenção de uma tabela de Cidades, não é o mesmo BD do sistema de viagens mas o processo é o mesmo para todas as tabelas.
- Primeiramente abra o Delphi e crie um File -> New -> VCL Forms Application.
- Depois em File -> Save Project As ..., salve como "untPrincipal" e de um nome para o projeto, pode ser "Cidades", salve.
- Altere o Caption do Form para "Manutenção de Cidades" e o name para frmCidades. CTRL + S para salvar.
- Crie um Data Module em File -> New -> Other ..., selecione Data Module, OK.
- Neste Data Module, adicione o componente SQLConnection da paleta dbExpress para conectarmos ao nosso banco Firebird (como criar foi ensinado no outro post).
- Dê um duplo clique sobre o componente para abrir as opções.
- No driver name selecione Interbase.
- Na Key DataBase você coloca o caminho até o seu arquivo *.fdb, o banco de dados, se você salvar a aplicação no mesmo diretório que está o banco de dados pode colocar apenas o nome do arquivo.fdb, isto vai evitar problemas quando você for tentar usar o sistema em outro computador (terá que ter o banco no mesmo caminho).
- Na key ServerCharSet coloque "WIN1252" para que o sistema aceite acentos do português.
- Verifique se o User_Name, Password e SQLDialect estão corretos.
- Se quiser pode testar a conexão clicando no quarto botão bem em cima, vai pedir a senha (masterkey), se tudo der certo vai receber a mensagem "Successfully Connected".
- Clique em OK, altere a propriedade LoginPrompt do SQLConnection para false, isso faz com que ele deixe de perguntar a senha toda vez que você for abrir uma conexão com o banco.
- Altere a propriedade Name do DataModule para "DM".
- CTRL+ S para salvar, chame a Unit de "untDM".
Até aqui criamos um novo projeto, um formulário para a manutenção de cidades, um data module para separar a parte de conexão com o banco das telas de manutenção e criamos a conexão. Agora vamos fazer o processo que será igual para todos as "tabelas básicas" do banco que precisam apenas uma tela para inserir, alterar, excluir e consultar os dados (que eu chamo de manutenção).
- Adicione três componentes no DM (Data Module), um SQLDataSet, um DataSetProvider e um ClientDataSet, para cada tabela terá que ter estes 3 componentes.
- Selecione o SQLDataSet e altere a propriedade SQLConnection, selecione nosso componente de conexão SQLConnection1.
- Na propriedade CommandText vai aparecer "..." quando colocar o cursor do mouse dentro, clique nos pontinhos (...) para abrir o CommandText Editor, nele vão aparecer as tabelas do banco de dados e os campos de cada tabela, selecione a tabela que você está fazendo a manutenção, aqui é "CIDADE" e clique no botão "Add Table to SQL", depois em "Add Field do SQL", isso vai montar uma SQL de consulta dos dados, ex.: "select * from CIDADE", depois clique em OK.
- Selecione o DataSetProvider1 e altere a propriedade DataSet, selecione o SQLDataSet1.
- Selcione o ClientDataSet1 e altere a propriedade ProviderName, selecione o DataSetProvider1.
- Ative o ClientDataSet1 (propriedade Active = true).
- Duplo clique no ClientDataSet1 para abrir o Fields Editor, clique com o botão direito dentro do field Editor e depois em "Add all fields" ou "CTRL + F" para adicionar todos os campos da tabela.
- É interessante renomear os componentes para ficar fácil a identificação quando tiver que fazer pra todas as tabelas, de preferência antes de começar alterar as propriedades dos componentes, neste caso só vou fazer de uma então pulei esta parte.
- Deixe o Fields Editor do ClientDataSet1 aberto e volte para o frmCidades (untPrincipal).
- Selecione todos os fields e arraste eles para dentro do frmCidades, vai pedir uma confirmação para usar o form DM ou algo semelhante, clique em "Yes". Vão ser criados os Edits e Labels conforme os fields da tabela e um DataSource.
- Adicione no formulário o componente DBNavigator e altere a propriedade DataSource, selecione DataSource1.
- Adicione também o componente DBGrid e também altere sua propriedade DataSource para DataSource1. Neste momento já deve trazer os dados do banco (se tiver algo cadastrado), caso não traga nada e estes componentes fiquem "desativados", sem as funções, verifique no DM se o ClientDataSet está com a propriedade Active = true.
- Adicione também um Button, pode ser ao lado do DBNavigator, altere a propriedade Caption para "Salvar" ou "Gravar", de um duplo clique sobre o Button e então vamos digitar o código responsável por fazer com que os dados alterados ou inseridos realmente sejam salvos no banco, antes adicione nas uses o DM, para isso pressione "Alt + F11", selecione a unitDM e OK, agora sim o código para salvar:
- Pressione "F12" para voltar ao modo Design.
Pronto, a tela deve ter ficado parecida com a imagem abaixo.
- CTRL + Shift + S para salvar tudo.
- CTRL + F9 para compilar.
- F9 para compilar e executar a aplicação com Debbuger, ou
- CTRL + Shift + F9 para compilar e executar sem Debug (mais rápido)
A aplicação funcionando.
Bom pessoal, minha aula está acabando e vou ficando por aqui, no futuro escreverei um post mostrando como fazer um menu na aplicação e também telas de manutenção em tabelas que tem chaves estrangeiras (usar lookup).
Até.
- Primeiramente abra o Delphi e crie um File -> New -> VCL Forms Application.
- Depois em File -> Save Project As ..., salve como "untPrincipal" e de um nome para o projeto, pode ser "Cidades", salve.
- Altere o Caption do Form para "Manutenção de Cidades" e o name para frmCidades. CTRL + S para salvar.
- Crie um Data Module em File -> New -> Other ..., selecione Data Module, OK.
- Neste Data Module, adicione o componente SQLConnection da paleta dbExpress para conectarmos ao nosso banco Firebird (como criar foi ensinado no outro post).
- Dê um duplo clique sobre o componente para abrir as opções.
- No driver name selecione Interbase.
- Na Key DataBase você coloca o caminho até o seu arquivo *.fdb, o banco de dados, se você salvar a aplicação no mesmo diretório que está o banco de dados pode colocar apenas o nome do arquivo.fdb, isto vai evitar problemas quando você for tentar usar o sistema em outro computador (terá que ter o banco no mesmo caminho).
- Na key ServerCharSet coloque "WIN1252" para que o sistema aceite acentos do português.
- Verifique se o User_Name, Password e SQLDialect estão corretos.
- Se quiser pode testar a conexão clicando no quarto botão bem em cima, vai pedir a senha (masterkey), se tudo der certo vai receber a mensagem "Successfully Connected".
- Clique em OK, altere a propriedade LoginPrompt do SQLConnection para false, isso faz com que ele deixe de perguntar a senha toda vez que você for abrir uma conexão com o banco.
- Altere a propriedade Name do DataModule para "DM".
- CTRL+ S para salvar, chame a Unit de "untDM".
Até aqui criamos um novo projeto, um formulário para a manutenção de cidades, um data module para separar a parte de conexão com o banco das telas de manutenção e criamos a conexão. Agora vamos fazer o processo que será igual para todos as "tabelas básicas" do banco que precisam apenas uma tela para inserir, alterar, excluir e consultar os dados (que eu chamo de manutenção).
- Adicione três componentes no DM (Data Module), um SQLDataSet, um DataSetProvider e um ClientDataSet, para cada tabela terá que ter estes 3 componentes.
- Selecione o SQLDataSet e altere a propriedade SQLConnection, selecione nosso componente de conexão SQLConnection1.
- Na propriedade CommandText vai aparecer "..." quando colocar o cursor do mouse dentro, clique nos pontinhos (...) para abrir o CommandText Editor, nele vão aparecer as tabelas do banco de dados e os campos de cada tabela, selecione a tabela que você está fazendo a manutenção, aqui é "CIDADE" e clique no botão "Add Table to SQL", depois em "Add Field do SQL", isso vai montar uma SQL de consulta dos dados, ex.: "select * from CIDADE", depois clique em OK.
- Selcione o ClientDataSet1 e altere a propriedade ProviderName, selecione o DataSetProvider1.
- Ative o ClientDataSet1 (propriedade Active = true).
- Duplo clique no ClientDataSet1 para abrir o Fields Editor, clique com o botão direito dentro do field Editor e depois em "Add all fields" ou "CTRL + F" para adicionar todos os campos da tabela.
- É interessante renomear os componentes para ficar fácil a identificação quando tiver que fazer pra todas as tabelas, de preferência antes de começar alterar as propriedades dos componentes, neste caso só vou fazer de uma então pulei esta parte.
- Deixe o Fields Editor do ClientDataSet1 aberto e volte para o frmCidades (untPrincipal).
- Selecione todos os fields e arraste eles para dentro do frmCidades, vai pedir uma confirmação para usar o form DM ou algo semelhante, clique em "Yes". Vão ser criados os Edits e Labels conforme os fields da tabela e um DataSource.
- Adicione no formulário o componente DBNavigator e altere a propriedade DataSource, selecione DataSource1.
- Adicione também o componente DBGrid e também altere sua propriedade DataSource para DataSource1. Neste momento já deve trazer os dados do banco (se tiver algo cadastrado), caso não traga nada e estes componentes fiquem "desativados", sem as funções, verifique no DM se o ClientDataSet está com a propriedade Active = true.
- Adicione também um Button, pode ser ao lado do DBNavigator, altere a propriedade Caption para "Salvar" ou "Gravar", de um duplo clique sobre o Button e então vamos digitar o código responsável por fazer com que os dados alterados ou inseridos realmente sejam salvos no banco, antes adicione nas uses o DM, para isso pressione "Alt + F11", selecione a unitDM e OK, agora sim o código para salvar:
procedure TfrmCidades.Button1Click(Sender: TObject); begin DM.ClientDataSet1.ApplyUpdates(0); end;
- Pressione "F12" para voltar ao modo Design.
Pronto, a tela deve ter ficado parecida com a imagem abaixo.
- CTRL + F9 para compilar.
- F9 para compilar e executar a aplicação com Debbuger, ou
- CTRL + Shift + F9 para compilar e executar sem Debug (mais rápido)
A aplicação funcionando.
Bom pessoal, minha aula está acabando e vou ficando por aqui, no futuro escreverei um post mostrando como fazer um menu na aplicação e também telas de manutenção em tabelas que tem chaves estrangeiras (usar lookup).
Até.
Primeiros Comandos no Oracle
Primeiras aulas de BD (Oracle), achei interessante os comandos de criar usuário e dar permissão.
- Criar novo usuário: CREATE USER NOMEUSUARIO IDENTIFIED BY SENHAAQUI DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
- Dar permissões para este usuário se logar e criar tabela etc: GRANT CONNECT, RESOURCE TO NOMEUSUARIO;
- Criar tabela: CREATE TABLE TABELATESTE (CAMPONUMERO NUMBER, CAMPOTEXTO VARCHAR(50));
Ok, daqui uns dias faço algum post decente, no momento se contentem com isso e com este outro post sobre JDeveloper, agora ando meio ocupado estudando 14 horas por dia (PROVA ANCOR PELA FRENTE + FACULDADE = LOGO_DESCOBRIREMOS).
Até!
- Criar novo usuário: CREATE USER NOMEUSUARIO IDENTIFIED BY SENHAAQUI DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
- Dar permissões para este usuário se logar e criar tabela etc: GRANT CONNECT, RESOURCE TO NOMEUSUARIO;
- Criar tabela: CREATE TABLE TABELATESTE (CAMPONUMERO NUMBER, CAMPOTEXTO VARCHAR(50));
Ok, daqui uns dias faço algum post decente, no momento se contentem com isso e com este outro post sobre JDeveloper, agora ando meio ocupado estudando 14 horas por dia (PROVA ANCOR PELA FRENTE + FACULDADE = LOGO_DESCOBRIREMOS).
Até!
Assinar:
Postagens (Atom)