-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
(Resolvido) Ajuda no relatório de cheques
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Observando o tópico vi que vocês estão usando free em vez de release para liberar o form. a vantagem do release é que ele aguarda até que todos os eventos dos componentes do form tenham encerrado suas execuções para então fechar o form. Isto evita que se deixe áreas sujas na memória. O help do Delphi recomenda o uso de release em vez do free conforme mostro abaixo, principalmente em janelas filhas: -
Rotina de backup completa Prezados, Atendendo a uma solicitação de um membro deste fórum que pedu para ensiná-lo a fazer uma rotina de backup para seu banco MySQL, e sendo eu adepto a divulgação do conhecimento, disponibilizo abaixo uma rotina (codigo fonte) completo que desenvolvi para resolver o problema de um cliente e que está em pleno funcionamento. Este programa usa uma chamada ao DOS (prompt de comando) que aciona o utilitário de backup do mysql (o mysqldump), aguarda até o fim da execução do mesmo e entrega um arquivo ‘.sql’ com o backup do banco. O grande ponto deste programa é a rotina createProcessSimple que consegui na net e que possibilita a chamada de um programa e a espera até que o mesmo tenha terminado. A rotina utiliza o seguinte caso de uso (UML): Pré-condição: A) O usuário utilizado no mysqldump necessita ter plenos direitos para acesso ao banco de dados B) O programa necessita de direitos de acesso, leitura, escrita e exclusão, na pasta em que será gravado o backup Pós condição: arquivo de backup com data e hora em que foi gerado. Requisitos Não Funcionais: A) O programa necessita ser executado diretamente no console (para evitar tráfego na rede) servidor do banco de dados B) O servidor do banco de dados deve ter espaço suficiente para armazenar o backup (duas ou três vezes mais que o tamanho do arquivo a ser gerado) Caso de Uso: 1) Ator aciona programa 2) Sistema Exibe mensagem “Aguarde. Efetuando Backup”. 3) Sistema aciona chamada ao DOS para executar o mysqldump 4) Mysqldump, através da Chamada ao DOS gera arquivo “backup.sql” 5) Chamada ao DOS retorna ao sistema, após fim da execução de mysqldump informando sucesso na operação 6) Sistema renomeia arquivo “backup.sql” para a seguinte configuração: aaaammddhhmnss.sql sendo: aaaa = ano; mm = mês, dd = dia; hh = hora mn = minutos; ss = segundos. 7) Sistema exibe mensagem “Backup Realizado!” 8) Fim do caso de uso. Fluxo de exceção no item 5 5.1 Chamada ao DOS retorna ao sistema, após fim da execução de mysqldump informando sucesso na operação 5.2 Sistema exibe mensagem “BACKUP NÃO FOI PROCESSADO!” 5.3-Vai para item 8 5.4-Fim do Fluxo de exceção. Espero que seja útil a todos vocês assim como está sendo útil comigo. backup.dpr program backup; uses Forms, unitbackup in 'unitbackup.pas' {frmBackup}; {$R *.res} begin Application.Initialize; Application.Title := 'Backup'; Application.CreateForm(TfrmBackup, frmBackup); Application.Run; end. unitbackup.dfm object frmBackup: TfrmBackup Left = 335 Top = 372 BorderIcons = [] BorderStyle = bsDialog Caption = 'Backup' ClientHeight = 129 ClientWidth = 405 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] Icon.Data = { 0000010001002020180000000000A80C00001600000028000000200000004000 00000100180000000000000C0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000001717175353537A7A7A 7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7777773B3B3B0000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000002F2F2FA6A6A6F5F5F5 F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5EEEEEE7777770000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000313131ACACACEBEBEB B3B3B3999999D1D1D1F3F3F3BBBBBB929292CACACAF6F6F67B7B7B0000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000313131ACACACD7D7D7 6464642E2E2EA2A2A2E7E7E77474741F1F1F929292F6F6F67B7B7B0000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000313131ACACACE6E6E6 9E9E9E7D7D7DC5C5C5F0F0F0A8A8A8737373BBBBBBF6F6F67B7B7B0000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000313131ACACACFAFAFA EEEEEEE8E8E8F4F4F4FBFBFBEFEFEFE6E6E6F2F2F2F6F6F67B7B7B0000000000 002F2F2F5F5F5F62626262626262626262626262626262626262626262626242 4242121212000000000000000000000000000000000000313131ACACACEEEEEE BEBEBEA8A8A8D8D8D8F4F4F4C5C5C5A1A1A1D1D1D1F6F6F67B7B7B0000000000 006B6B6BD6D6D6DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD95 95952A2A2A000000000000000000000000000000000000313131ACACACDADADA 6F6F6F3C3C3CA8A8A8E9E9E97D7D7D2E2E2E999999F6F6F67B7B7B0000000000 007B7B7BF6F6F6D5D5D5A9A9A9C9C9C9F5F5F5DBDBDBAFAFAFC3C3C3EFEFEFAC ACAC313131000000000000000000000000000000000000313131ACACACE3E3E3 949494696969A3A3A3C5C5C58B8B8B646464B3B3B3F6F6F67B7B7B0000000000 007B7B7BF6F6F69D9D9D363636818181E9E9E9ABABAB434343747474DBDBDBAC ACAC313131000000000000000000000000000000000000313131ACACACF7F7F7 E3E3E3CCCCCCACACAC999999B8B8B8D7D7D7EBEBEBF6F6F67B7B7B0000000000 007B7B7BF6F6F6B0B0B05C5C5C999999EDEDEDBBBBBB6767678E8E8EE2E2E2AC ACAC313131000000000000000000000000000000000000312121AC7474FEACAC FEACACE8A1A19677776262629F9F9FD7D2D2EBBEBEF6A6A67B53530000000000 007B7B7BF6F6F6E7E7E7CFCFCFE1E1E1F9F9F9EBEBEBD2D2D2DEDEDEF6F6F6AC ACAC313131000000000000000000000000000000000000310909AC2121FE3131 FE3131E12E2E7122222424246262629E9191CF5F5FF62F2F7B17170000000000 007B7B7BF6F6F6DCDCDCB8B8B8D3D3D3F7F7F7E1E1E1BDBDBDCECECEF2F2F2AC ACAC313131000000000000000000000000000000000000310000AC0000FF0000 FF0000DE0000620000080C0C344A4A6279799F4D4DD223236911110000000000 007B7B7BF6F6F6A4A4A44545458B8B8BEBEBEBB2B2B25252527F7F7FDEDEDEAC ACAC313131000000000000000000000000000000000000310000AC0000FF0000 FF0000DE0000620000020C0C104A4A247D7D626F6F965F5F4B2F2F0000000000 007B7B7BF6F6F6A8A8A84D4D4D828282CECECEA1A1A1555555848484DFDFDFAC ACAC3131310000000000000000000000000000000000002400007F0000BC0000 BC0000A40000480000000F0F005C5C059B9B337B7B5B5B5B2D2D2D0000000000 007B7B7BF6F6F6E0E0E0C0C0C0B0B0B0A2A2A2AAAAAAB8B8B8D3D3D3F3F3F3AC ACAC3131310000000000000000000000000000000000000C00002C0000410000 41000039000019000000141400808002D1D11276761F1F1F0F0F0F0000000000 007B5F5FF6BEBEFEC4C4FEC4C4BD9B9B716B6B939393D1D1D1EBD7D7F9C9C9AC 8585312525000000000000000000000000000000000000000000000000000000 00000000000000000000181800939300F1F1009292003737001B1B0000000000 007B2323F64747FE4949FE4949A33A3A392828555555939393C38383EF5757AC 3131310E0E000000000000000000000000000000000000000000000000000000 00000000000000000000181800939300F9F900D5D500AEAE0057570000000000 007B0000F60000FF0000FF0000940000180000273131596F6F935A5AD028289B 10102C0404000000000000000000000000000000000000000000000000000000 00000000000000000000131300767600D0D000E7E700F6F6007B7B0000000000 007B0000F60000FF0000FF00009400001800000F3131236F6F567070935C5C71 3A3A201010000000000000000000000000000000000000000000000000000000 000000000000000000000707002F2F005C5C00B0B000F6F6007B7B0000000000 00670000CE0000D50000D500007C000014000000383800808025848459717148 4848141414000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000D1000748B00CEF70067900000280000 002B00005700005A00005A000034000008000000505000B6B60F96962647471E 1E1E080808000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000051000318B0057FB002BCF0000A30000 0000000000000000000000000000000000000000626200DEDE00AFAF00444400 1616000606000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000D0000790000DD0000DD0000DD0000 0000000000000000000000000000000000000000626200DEDE00DBDB00ABAB00 6969001E1E000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000060000350000620000620000620000 0000000000000000000000000000000000000000585800C8C800EEEE00FAFA00 ACAC003131000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000002929005D5D009E9E00E6E600 ACAC003131000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000545A00C7D500 A0B1002D3E00000B000003000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000285A0060D500 4DD80016A100006300001F000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000570000CE00 00F50000F50000AF000037000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000002B00006700 007B00007B00005700001B000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000FFFF C000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00000030000000300000000 C0000000C0000003C0000003C0000003C0000003C0000003C0000003C0000003 C0000003C0000003FF000003FF00000303C0000303C00003C3C00003C3C0FC03 33F0FC0333F0FF03FFFFFF03FFFFFF03FFFFFF03FFFFFFC3FFFFFFC3FFFF} OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object lblMensagem: TLabel Left = 8 Top = 24 Width = 393 Height = 37 Alignment = taCenter AutoSize = False Caption = 'Iniciando Backup' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -24 Font.Name = 'MS Sans Serif' Font.Style = [fsBold] ParentFont = False end object btnOK: TBitBtn Left = 160 Top = 80 Width = 75 Height = 25 Enabled = False Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -21 Font.Name = 'Arial' Font.Style = [fsBold] ParentFont = False TabOrder = 0 OnClick = btnOKClick Kind = bkOK end object Timer1: TTimer Interval = 2000 OnTimer = Timer1Timer end end unitbackup.pas unit unitbackup; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Shellapi, Buttons, ExtCtrls; type TfrmBackup = class(TForm) lblMensagem: TLabel; btnOK: TBitBtn; Timer1: TTimer; procedure btnOKClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } function CreateProcessSimple(cmd: string):boolean; procedure ExecutarBackup; public { Public declarations } end; var frmBackup: TfrmBackup; implementation {$R *.dfm} function TfrmBackup.CreateProcessSimple(cmd: string):boolean; var SUInfo: TStartupInfo; ProcInfo: TProcessInformation; begin FillChar(SUInfo, SizeOf(SUInfo), #0); SUInfo.cb := SizeOf(SUInfo); SUInfo.dwFlags := STARTF_USESHOWWINDOW; SUInfo.wShowWindow := SW_HIDE; result := CreateProcess(nil, PChar(cmd), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, SUInfo, ProcInfo); if result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end; procedure TfrmBackup.btnOKClick(Sender: TObject); begin close; end; procedure TfrmBackup.ExecutarBackup; var aa,mm,dd, hh, mmm, ss, sss: word; aux : string; begin aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers --port=3306 '; aux := aux + '--user=root --result-file=backup.sql --databases sase"'; lblMensagem.Caption := 'Aguarde. Efetuando Backup'; lblMensagem.Refresh; if not createProcessSimple(aux) then lblMensagem.Caption := 'BACKUP NÃO FOI PROCESSADO!' else begin decodedate(date, aa, mm, dd); decodetime(time, hh, mmm, ss, sss); if FileExists('BACKUP.SQL') then begin aux := inttostr(aa); if mm < 10 then aux := aux + '0' + inttostr(mm) else aux := aux + inttostr(mm); if dd < 10 then aux := aux + '0'+ inttostr(dd) else aux := aux + inttostr(dd); if hh < 10 then aux := aux + '0'+ inttostr(hh) else aux := aux + inttostr(hh); if mmm < 10 then aux := aux + '0'+ inttostr(mmm) else aux := aux + inttostr(mmm); if ss < 10 then aux := aux + '0'+ inttostr(ss) else aux := aux + inttostr(ss); aux := aux + '.sql'; RenameFile('backup.sql', aux); lblMensagem.Caption := 'Backup Realizado!'; end; end; btnOK.Enabled := True; end; procedure TfrmBackup.Timer1Timer(Sender: TObject); begin ExecutarBackup; Timer1.Enabled := False; end; end.
-
(Resolvido) Mudar Engine de MyISAM para InnoDB
pergunta respondeu ao Cadu de Castro Alves de Denis Courcy em MySQL
Você já fez assim? ALTER TABLE minhatabela ENGINE = InnoDB -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Dá esse erro na hora de compilar: Isto é porque você terá que tratar linha a linha do TMemo. Você está usando o objeto e não a propriedade do objeto. Experimente Mscript.Lines Leia no help do delphi como usar o TMemo neste tipo de caso. -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Oi, 'robinhocne'! Você insistiu e colocou assim: SQL.Add('#39 + MScript + #39'); Eu falei no post anterior que era assim SQL.Add(MScript); -
Oi, Arthur! Vou falar do MySQL, que é a minha praia. Testado com um amplo faixa de compiladores diferentes. • Funciona em diversas plataformas. See Secção 2.2.3, “Sistemas Operacionais suportados pelo MySQL”. • Utiliza o GNU Automake, Autoconf, e Libtool para portabilidade. • APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl estão disponíveis. See Capítulo 12. • Suporte total a multi-threads usando threads diretamente no kernel. Isto significa que se pode facilmente usar múltiplas CPUs, se disponível. • Fornece mecanismos de armazenamento transacional e não transacional. • Tabelas em disco (MyISAM) baseadas em árvores-B extremamente rápidas com compressão de índices. • Um sistema de alocação de memória muito rápido e baseado em processo(thread). • Joins muito rápidas usando uma multi-join de leitura única otimizada. • Tabelas hash em memória que são usadas como tabelas temporárias. • Disponível como versão cliente/servidor ou embutida(ligada). Segurança • Um sistema de privilégios e senhas que é muito flexível, seguro e que permite verificação baseada em estações/máquinas. Senhas são seguras porque todo o tráfico de senhas é criptografado quando você se conecta ao servidor. Escalabilidade e limites • Lida com bancos de dados enormes. Usamos o Servidor MySQL com bancos de dados que contém 50.000.000 registros e sabemos de usuários que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas. • São permitidos até 32 índices por tabela. Cada índice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho máximo do índice é de 500 bytes (isto pode ser alterado na compilação do MySQL). Um índice pode usar o prefixo de campo com um tipo CHAR ou VARCHAR. Conectividade • Os clientes podem se conectar ao servidor MySQL usando sockets TCP/IP, em qualquer plataforma. No sistema Windows na família NT (NT, 2000 ou XP), os clientes podem se conectar usando named pipes. No sistema Unix, os clientes podem se conectar usando arquivos sockets. • A interface Connector/ODBC fornece ao MySQL suporte a progras clientes que usam conexão ODBC (Open-DataBase-Connectivity). Por exemplo, você pode usar o MS Access para conectar ao seu servidor MySQL. Os clientes podem ser executados no Windows ou Unix. O fonte do Connector/ODBC está disponível. Todas as funções ODBC são suportadas, assim como muitas outras. Fonte: Manual MySQL Versão 4.1 pags. 22 a 24.(refman-4.1-pt.a4.pdf) Como pode ver é um banco que pode ser utilizado para pequenos e grandes projetos.
-
Oi, '--Arthur --' ! Normalmente a escolha do banco de dados é um requisito de sistema. Depende do volume de dados, quantidade de usuários simultâneos, etc. Como exemplo posso citar o Firebird, MySQL, PostGree, MSAccess, SQL Server, ORACLE, entre outros. Os três primeiros citados acima são freeware e de fácil aprendizado.
-
Isto porque o retorno avisa o sistema operacional sobre o status de finalização do programa. Quando o retorno é 0, então o programa finalizou sem erros. Não tente colocar void main O correto é int main
-
Oi, 'bush' ! Dois comandos podem ser dados. ( O nome da tabela que vou usar neste exemplo é "minhatabela") O primeiro é DELETE FROM minhatabela Este é mais lento, mas se você estiver com o log-binário ativo, ele vai registrar e permitir que você recupere o conteúdo caso a ação seja acidental. O segundo é TRUNCATE TABLE minhatabela É ais rápido que o primeiro pois ele destroi e reconstrói a tabela. a desvantagem é que ele não deixa rastro para recuperação dos dados em caso de perda acidental. É isso. Leia o manual do MySQL. Lá voce encontrará a resposta a esta e a várias outras perguntas. Um abraço.
-
Oi, Micheus! Tanto o paradox como o DBF tratam o diretório onde estão as tabelas como banco de dados (é o mesmo que acontece com o MySQL usando o engine MyISAM). As tabelas devem ser mencionadas sem a extensão. E, você está certo quanto ao uso indevido das aspas duplas.
-
[Oracle - SQL Loader] Como ler arquivos com campos do tipo float?
pergunta respondeu ao Lucas Catón de Denis Courcy em Demais Bancos
Você já leu o FAQ do SQL Loader? Aqui vai um link Oracle SQL*Loader FAQ -
Oi, 'nego drama' ! Quando desenvolvemos um algorítimo devemos divid-i-lo em tres blocos, sempre que possível. Inicialização corpo e finalização Na inicialização nós declaramos as variáveis e as inicializamos apropriadamente. No corpo, desenvolvemos nosso código conforme o problema que temos pela frente. Na finalização, apresentamos os totais (as respostas do que nos foi solicitado. No código abaixo (seu código melhorado para facilitar esta explicação) a iicialização vai da linha "var" até alinha "leia(n)" O corpo, da linha "enquanto i <= n faça' até a linha "fim de enquanto" e a finalização da linha "Escreva ("sexo: Masculino")" até a linha "fimalgoritmo" No corpo também dividi em 3 blocos, que são leitura, processamento e incrementação a leitura vai de da linha "altura := 0" até a linha "leia (sexo)" o processamento, que é onde fazemos as perguntas e efetuamos os cálculos, vai da linha "se (sexo = "fem") então" até a linha "fimse" antes da linha "i := i + 1" e a incrementação é alinha "i := i + 1" (é nesta linha que controlamos o laço do corpo) Abaixo está seu código corrigido. Ele pode ser melhorado mas para seu entendimento inicial, já está bom. Se houver dúvidas seja chato. PERGUNTE. var cont, i, n : inteiro altura: real mai_alt_hom, mai_alt_mul, men_alt_hom, men_alt_mul : real sexo : caracter inicio mai_alt_mul := 0 mai_alt_hom := 0 men_alt_hom := 0 men_alt_mul := 0 n := 0 i := 1; Escreva ("quantidade de pessoas: ") leia (n) enquanto i <= n faça altura := 0 sexo := ""; escreva ("qual altura: ") leia (altura) Escreva ("sexo: ") leia (sexo) se (sexo = "fem") então se (altura > mai_alt_mul)então mai_alt_mul := altura fimse se (altura < men_alt_mul)então men_alt_mul := altura fimse fimse se (sexo = "mas") então se (altura > mai_alt_hom) então mai_alt_hom := altura fimse se (altura < men_alt_hom) então men_alt_hom := altura fimse fimse i := i + 1 fim de enquanto Escreva ("sexo: Masculino") Escreva ("Maior altura = ") Escreva (mai_alt_hom) Escreva ("Menor altura = ") Escreva (men_alt_hom) Escreva ("sexo: Feminino") Escreva ("Maior altura = ") Escreva (mai_alt_mul) Escreva ("Menor altura = ") Escreva (men_alt_mul) fimalgoritmo Um Abraço.
-
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Oi, 'robinhocne'! O correto é assim, se você vai usar uma variável dentro do Add procedure TFrmIzaUpDate.SpbATualizarClick(Sender: TObject); begin with QryAtualizacao do begin close; SQL.Clear; SQL.Add(MScript); ExecSql; end; end; Resposta: Neste ponto peço ajuda aos universitários de plantão. Pois trabalho com MySQL e não sei nada de Firebird. -
Potências de 2 de 0 a 10 em pascal
pergunta respondeu ao ucastro de Denis Courcy em Lógica de Programação
Oi, 'ucastro' ! Tente assim: program potenciacao; uses crt; var base, potencia: integer; frase: string; begin clrscr; for base := 1 to 10 do begin case base of 2: frase := 'quadrado'; 3: frase := 'cubo'; 4: frase := 'quarta'; 5: frase := 'quinta'; 6: frase := 'sexta'; 7: frase := 'setima'; 8: frase := 'oitava'; 9: frase := 'nona'; 10:frase := 'decima'; end; writeln(base, ' elevado a(o) ' + frase + ' = ', exp(base, potencia)); end; end. Não lembro se é exp(base, potencia) ou se é exp(potencia, base). -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Oi, 'robinhocne'! Não tenho acesso ao site que você enviou. Sou adepto ao quanto mais simples melhor. Se você vai executar isto no cliente sem a sua presença, então não há necessidade de floreamento. basta uma tela(label) informando que está sendo atualizado e outra que, ao fim do processamento, informe que foi atualizado. É apenas um processamento batch. Mas, vá fundo. Dê asas à sua criatividade. É a melhor coisa do mundo. Um abraço -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Resposta: Como você quizer. Mas separado é melhor, pois você não mistura a aplicação com a atualização da aplicação. Resposta: Sim. Você poderá usar qualquer script de atualização. Resposta: Sim. Como o nome e extensão que você quizer. Resposta: Basicamente O programa de atualização pega o script de atualização, que neste caso chamarei de arquivo.sql; Lê, linha a linha, sendo que em cada linha há um comando SQL completo. E, a cada linha lida, executa a atualização necessária. -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Oi, 'robinhocne'! Mais fácil que o exemplo que dei só assim: procedure atualiza; var F TextFile; bufer: string; begin AssignFile(F, 'C:\nomedoarquivo.sql'); Reset(F); Readln(F, buffer); while not eof(F) do begin with query1 do begin Active := False; SQL.Clear; SQL.Add(buffer); grava; end; Readln(F, buffer); end; CloseFile(F); end; procedure grava; begin Try Database.StartTansaction; query1.ExecSQL; Database.Commit; except showmessage('Deu caca na gravacao'); Database.Rollback; end; end; Como você pode observar acima, eu criei um arquivo texto contendo o script de modificações no banco e chamei este arquivo de 'arquivo.sql'. Logo depois, alterei a procedure para abrir o arquivo texto, ler o conteúdo e executar no banco a alteração. O 'arquvo.sql' possui uma instrução para linha. Mas você pode modificar para melhorar o entendimento de quem quizer ler o conteúdo do 'arquivo.sql' A vantagem deste código é que o executável pode ficar no seu cliente e você pode enviar somente o script para atualização . Outra vantagem é que posso ter uma ou N instruções SQl dentro do script. Divirta-se. -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Oi, 'robinhocne'! Vamos as respostas: Resposta: Sim em ambos os casos 1 e 2. Resposta: Não. Um form simples com apenas um botão e todo o código escrito é a melhor solução. Resposta: Sim. Seria o código de checagem para evitar que a mesma atualização fosse feita mais de uma vez. Resposta: Já fiz isso no post anterior. Pegue a idéia, transforme para seu banco Firebird e teste. -
Prezados colegas do PHP, por favor ensinem como produzir um relatório master detail, à nossa colega, com base no select corrigido e mencionado acima. Grato, de antemão
-
Se o que você quer é ordenar por nome e por data, então acrescente como abaixo: SELECT * FROM ranking ORDER BY CharArchLVL DESC, minhadata ASC LIMIT 100 ; Para cada CharArchLVL que aparecer em ordem descendente ele vai exibir as datas em minhadata em ordem ascendente.
-
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Sim, mas como onde ? Oi, 'robinhocne'! Não sei que tipo de banco você está usando. Então vou falar de modo genérico, mas com exemplos que o guiarão melhor neste caminho. Crie um programinha delphi e coloque nele os objetos de banco que você utiliza. Neste exemplo vou usar o TQuery, mas você faça como achar melhor. De modo simples o que você necessita é uma execução para cada atualização. Assim, se tenho duas tabelas a atualizar e tenho que enviar a correção para meu cliente, então seria assim em linhas gerais que o codigo seria construido. procedure atualiza; begin with query1 do begin Active := False; SQL.Clear; SQL.Add('ALTER TABLE tabela1 ' + 'ADD COLUMN colunax char(10) NOT NULL'); grava; SQL.Clear; SQL.Add('ALTER TABLE tabela2 ' + 'ADD COLUMN colunax char(10) NOT NULL'); grava; end; end; procedure grava; begin Try Database.StartTansaction; query1.ExecSQL; Database.Commit; except showmessage('Deu caca na gravacao'); Database.Rollback; end; end; P.S. Não testei o código. O que tem aí é só para exemplificar. Um abraço. -
(Resolvido) Fazer atualização no Banco de dados sem interferir no
pergunta respondeu ao robinhocne de Denis Courcy em Delphi, Kylix
Escreva scripts de atualização de tabelas para o seru banco. As instruções variam de banco para banco. -
Oi, Luiz! Em primeiro lugar: Não existe "arquivo.db" no MySQL. Em segundo lugar: Aconselho você ler o manual do mysql. Se não souber em ingles, pode ler o da versão 4.1 que está traduzido para o português. Em terceito lugar: Para carregar um arquivo .sql utilize o utilitário de linha de comando chamado mysql. Ele funciona assim: Na linha de comando do shell do linux ou no prompt de comando do DOS/Windows digite: mysql -u root -p O mysql vai te pedir a senha do root. Se não pedir é porque não existe senha. Vai aparecer um prompt desta forma: mysql> que vou usar como referencia durante o restante desta resposta. Digite o seguinte comando para dar carga no seu banco: mysql>USE meubanco; Onde meubanco é o nome do seu banco de dados. Este comando vai selecionar o banco de dados se ele existir. e dará a seguiinte resposta: "database changed" Se o banco não existe crie o banco assim: mysql>CREATE DATABSE meubanco; Logo após de a carga que você necessita: mysql> SOURCE arquivo.sql; Aguarde até o final da carga. Ela pode demorar um pouco. Ao final da carga, para sir do mysql digite mysql>QUIT; Divirta-se
-
Você poderia ser mais específico, por favor? Pois a resposta que dei anteriormente já satisfaz seu questionamento, inclusive com respeito ao estar "parecido" com o link que você enviou.
-
Oi, Nelma! O select correto está descrito abaixo, porém vai continuar retornando, em várias linhas, a mesma região para o mesmo estado. O controle, para que apareça somente uma vez, você que vai ter que fazer via programação. O SQL retorna sempre uma tabela (em memória) e neste tipo de relacionamento não há outra forma de resolver. Se desejar, por não saber como fazer, posso mover este post para a área de PHP (que acho ser a linguagem que você está usando). Lá eles poderão auxiliá-la melhor. SELECT DISTINCT policia_militar.descricao_pm, policia_militar.url_pm, estado.cod_estado, regiao.cod_regiao, regiao.regiao FROM regiao, estado, policia_militar WHERE regiao.cod_regiao = estado.cod_regiao AND estado.cod_estado = policia_militar.cod_estado ORDER BY regiao.cod_regiao, estado.cod_estado