
Bettega
Membros-
Total de itens
28 -
Registro em
-
Última visita
Tudo que Bettega postou
-
Tenho em um computador, o MySQL instalado, funcionando normalmente, com o Zeus. Instalei o MariaDB, e quando tento conectar ao database, recebo a seguinte mensagem : SQL error: Unkown database 'estoque'. Se Eu criar este database no MySQL, consigo conectar mesmo colocando MariaDB-10 no protocolo. Em outro computador, sem o MySQL, quando tento conectar, recebo a seguinte mensagem : Requested database driver was not found. O que devo fazer em cada caso ? Desejo passar a utilizar o MariaDB. Obrigado.
-
Deu certo. Fiz da seguinte maneira : Query1.Active := false; Query1.Close ; Query1.SQL.Clear ; Query1.SQL.Add ( 'Select * from ' + mArq ) ; if Rb_Igual.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' = "' + Ed_Filtro.Text + '" ' ) ; if Rb_Difer.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' <> "' + Ed_Filtro.Text + '" ' ) ; if Rb_Maior.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' >= "' + Ed_Filtro.Text + '" ' ) ; if Rb_Menor.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' <= "' + Ed_Filtro.Text + '" ' ) ; Query1.SQL.Add ( 'order by ' + mIndex ) ; Query1.Active := true ; Query1.Open ; A tua dica foi o que me fez ir no caminho certo. A diferença foi nas aspas duplas. Quando visualizei no showmessage, vi que faltava algo. Obrigado, Bettega.
-
Obrigado Jhonas. Copiei e colei a tua resposta. Invalid use of keyword Token := Line Number: 1.
-
Bom dia. Estou tentando fazer um filtro em uma query. Tenho : Uma variável mArq, que é o nome do arquivo a consultar. 4 RadioButton if Rb_Igual .Checked then Inicio.mSinal := ' = ' ; if Rb_Difer .Checked then Inicio.mSinal := ' <> ' ; if Rb_Maior .Checked then Inicio.mSinal := ' >= ' ; if Rb_Menor .Checked then Inicio.mSinal := ' <= ' ; e dois edits Ed_Campo e Ed_Filtro Estou tentando fazer desta forma : Query1.Close ; Query1.SQL.Clear ; Query1.SQL.Add ( 'Select * from ' + mArq ) ; Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + Inicio.mSinal + Ed_Filtro.Text ) ; Já tentei colocar aspas em várias formas diferentes, mas sempre dá erro. Somente o select sem o where, funciona. Neste caso, a query é para arquivos Paradox. Posteriormente vou fazer para MySQL. Por esta razão, se forem diferentes, favor postar as duas. Obrigado.
-
Copiei os dados para o diretório do Delphi, e consegui instalar. Obrigado Jhonas
-
Exato. Já tenho o Delphi XE6 com Zeos. Como posso fazer para especificar o local ?
-
Estou tentando instalar o Zeos no Delphi 10.2. Baixei a última versão estável do Zeos. ( 7.2.6.1 ) Adiciono todos os paths necessários. Quando vou abrir o ProjectGroup, só encontro o ProjectGrup24.groupproj na pasta do Delphi 10.1. Acredito que seja o mesmo. Quando vou compilar os arquivos bpl, dá erro de compilação no ZDbc240.bpl ( Unit ZOleDB not Found ) e no ZComponent240.bpl ( Never-build package ZDbc must be recompiled ). Não adianta recompilar. Sempre dá erro. Mesmo assim, tento instalar o ZComponentDesign240.bpl, mas também dá erro, e não instala o Zeos. Alguma idéia do que fazer ? Obrigado. Bettega.
-
Jhonas, obrigado por sua resposta. Consegui contornar o problema, verificando se os dados foram atualizados, e só então fazer o applyupdate. Se o problema persistir em outras rotinas vou tentar fazer o downgrade do Zeos. Obrigado novamente.
-
Estou utilizando Delphi X6 / MySql 5 / Zeos 7.2.6 Tenho esta rotina em um programa, e está funcionando perfeitamente. zTable.Filter := 'CODBANC = ''' + mBanco + ''' '; zTable.Filtered := True ; zTable.IndexFieldNames := 'PREVPARA, D_C, ID' ; zTable.Open ; mSaldo := 0 ; zTable.First ; while not zTable.eof do begin mSaldo := mSaldo + zTable.FieldByName ( 'VALORC' ).AsFloat - zTable.FieldByName ( 'VALORD' ).AsFloat ; zTable.Edit ; zTable.FieldByName ( 'SALDO' ).AsFloat := mSaldo ; zTable.ApplyUpdates ; zTable.Next ; end; zTable.Filtered := False ; zTable.Close ; Quando coloquei a mesma rotina em outro programa, recebo a seguinte mensagem: 0 record(s) updated. Only one record should have been updated. Já tentei de tudo, mas não consigo resolver. No Portal Zeos Lib, tem o seguinte: For Zeos 7.2 please add the following line to your TZConnection. Properties: CLIENT_FOUND_ROWS=1 This will enable the CLIENT_FOUND_ROWS option which will change the behaviour of MySQL according to the documentation in the link https://dev.mysql.com/doc/refman/8.0/en/mysql-affected-rows.htm. Não sei como fazer isto. Obrigado.
-
Boa tarde. Tenho a seguinte rotina para alterar a cor do DBGrid, quando a categoria do cadastro for 'Conveniado'. procedure TF_Cadastrados.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if not (gdSelected in State) then Begin if DM1.Tb_Cadastrados.FieldByName ( 'SAU_CATEG' ).AsString = 'Conveniado' then begin DBGrid1.Canvas.Brush.Color := clYellow ; DBGrid1.Canvas.FillRect ( Rect ) ; DBGrid1.DefaultDrawDataCell ( Rect, Column.Field, State ) ; end; end; end; Está funcionando normalmente, porém os campos que estavam centralizados perdem o alinhamento, ficando as strings alinhadas à esquerda, e os numéricos alinhados à direita. Como fazer para manter o alinhamento centralizado ? Obrigado.
-
No meu comentário acima, esqueci de dizer que estou utilizando o MySQL com Zeos, e a função SQLHourGlass é do Zeos, e não do MySQL. Por esta razão este problema pode ocorrer também com outros bancos de dados que utilizem o Zeos.
-
Eu estava tendo problemas de velocidade com o MySQL, até que desabilitei o SQLHourGlass. Parece outro sistema. Fica a dica.
-
Jhonas, muito obrigado pela sua resposta. Eu achava que tinha ido pelo caminho errado ao escolher o MySQL, agora vejo que é só uma questão de adaptação. Vou retornar com outras perguntas com relação ao desenvolvimento em MySQL, mas por enquanto só posso agradecer. Bettega
-
Eu tenho um sistema em Paradox, e estou passando para MySQL. Para montar o arquivo, em Paradox, com 50.000 registros, leva 01:20 minutos. No MySQL levou 06:00 minutos. Utilizando os mesmos comandos, ou seja Insert, Campos ApplyUpDates. Vou Tentar utilizar os comandos diretos para ver se fica mais rápido. Eu utilizo muito o DBGrid, abrindo o arquivo inteiro, tanto em Table como em Query. No MySQL, quando acesso rapidamente os registros para baixo ficam muito lentos, o que não acontece com o Paradox. Por esta razão, achei que o Firebird seria uma opção mais rápida. Aguardo os seus comentários, Obrigado.
-
Pretendo iniciar a utilização do Firebird com Delphi XE6 para cima, e Zeos. Qual versão do Firebird devo instalar ? Obrigado.
-
Não consegui alterar a fonte do MonthCalendar, no entanto o TCalendar é muito fácil de alterar. Vou ter que alterar todo o programa que estava com o MonthCalendar, mas é o preço do progresso. Obrigado, resolveu o meu problema. PS. Ainda vou verificar se os comandos que eu utilizava no MonthCalendar vão funcionar com o TCalendar, mas acredito que sim. Novamente, Obrigado.
-
Jhonas, da forma que você colocou, vou ampliar o Form inteiro, porém só quero ampliar o MonthCalendar, conforme anexo. Obrigado.
-
Jhonas, obrigado pela resposta. Não consegui fazer pelo link, e não sei onde colocar os comandos que você citou. Coloquei no OnShow do Form, mas dá erro. Como posso proceder ?
-
Como faço para alterar o tamanho do MonthCalendar no Delphi XE2 ou no XE6 ? No Delphi 7 bastava alterar a fonte. Obrigado, José Luiz.
-
Jhonas, obrigado pela sua dica. A idéia é exatamente esta. Testei a rotina que você me passou, e funcionou perfeitamente na captura dos dados para as edits, porém não consegui arrastar os panels com o mouse. Vou fazer mais alguns testes, e aviso se consegui fazer funcionar. Vou fazer uma pausa para terminar o programa que é urgente, e depois volto para testar estas rotinas. Por enquanto, obrigado.
-
É exatamente isso. Agora, por exemplo, no onMouseDown, o programa executa a rotina SetCapture ( panel1.Handle ). Se eu estiver no panel2 como faço para que o SetCapture utilize os dados do Panel2, e não os do Panel1 ? Na rotina onMouseUp , coloquei somente o Panel1MouseUp para todos, visto que o panel não é citado dentro da rotina. A minha dúvida é como fazer para que as rotinas que pegam os dados do panel, saibam qual o panel que está sendo pressionado. Obrigado.
-
Preciso alterar a posicao ( Localização ) dos panels dentro do form. Para não ter que executar as rotinas MouseDown, MouseMove e MouseUp para cada panel ( tenho 150 panels ), eu necessito que ao pressionar o botão do mouse, o Setcapture do MouseDown saiba qual é o panel que eu estou pegando. O PanelMove substitua o Panel1.Left e o Panel1.Top pelo panel que está sendo movimentado. Acabei de ver que o MouseUp pode ser o mesmo para todos, pois não contém o componente panel nos seus comando. Obrigado.
-
Estou fazendo um programa para reservas de mesas de bailes. Como a distribuição das mesas pode variar de um baile para outro, necessito alterar a disposições destas mesas (panels). Para isso, estou utilizando duas formas : 1 ) Arrastar e soltar. 2 ) Abrir Edits para definir a posição. No primeiro caso, utilizo as funções OnMouseDown, OnMouseMove e OnMouseUp. Ao largar o Panel na posição desejada, os valores Left e Top deste panel são guardados em uma Tabela. No segundo case, utilizo o OnClick, com duas Edits. Uma para o Left e outra para o Top. As duas formas estão funcionando perfeitamente, porém eu estou repetindo as mesmas funções para as 150 mesas previstas. 1 ) Arrastar e soltar para o Panel1: procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mexendo := True; SetCapture ( panel1.Handle ); GetCursorPos ( Pos_Antiga ); end ; procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Pos_Nova: TPoint; mLeft : String ; mTop : String ; begin if mexendo then begin GetCursorPos ( pos_Nova ); Screen.Cursor := crSize; panel1.Left := panel1.Left - Pos_Antiga.X + Pos_Nova.X ; panel1.Top := panel1.Top - Pos_Antiga.Y + Pos_Nova.Y ; Pos_Antiga := Pos_Nova; end; end; procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if mexendo then begin Screen.Cursor := crDefault; ReleaseCapture; mexendo := False; end; end; 2 ) Abrir Edits para definir a posição. procedure TF_Alt_Posic.Panel1Click(Sender: TObject); begin Ed_Esq .Text := IntToStr ( panel1.Left ) ; Ed_Topo.Text := IntToStr ( panel1.Top ) ; end; procedure TF_Alt_Posic.BitBtn1Click(Sender: TObject); begin panel1.Left := StrToInt ( Ed_Esq .Text ) ; panel1.Top := StrToInt ( Ed_Topo.Text ) ; end; Como posso fazer para não ter que repetir essas rotinas 150 vezes ? Obrigado, Bettega.
-
Estou tentando fazer um Form de Pesquisa, utilizando arrays. Fiz da seguinte forma, mas não consigo definir os dados do array. Sempre dá erro na declaração do array. procedure TF_Pesquisa.FormShow(Sender: TObject); // Para definir os dados do DBGrid. var aCampos : array [ 1..2, 1..3 ] of String ; // Campo 1 = Nome do campo da Tabela a ser pesquisado // Campo 2 = Título no DBGrid // Campo 3 = Largura do campo do DBGrid i : Integer ; begin if DONDE.Caption = 'Cad_Clientes' then aCampos := [ [ 'COD_CLIENTE', 'Cód.', '70' ], [ 'NOME', 'Cliente', '420' ] ] ; if DONDE.Caption = 'Cad_Fornecedores' then aCampos := [ [ 'COD_FORNECEDOR', 'Cód.', '70' ], [ 'RAZAO', 'Fornecedor', '420' ] ] ; for i := 1 to 2 do begin DBGrid1.Columns.Add ; DBGrid1.Columns[i-1].FieldName := aCampos [ i, 1 ] ; // Coluna 0 DBGrid1.Columns[i-1].Title.Caption := aCampos [ i, 2 ] ; DBGrid1.Columns[i-1].Width := StrToInt ( aCampos [ i, 3 ] ) ; end; end ; procedure TF_Pesquisa.Ed_PesqExit(Sender: TObject); // Ed_Pesq = tEdit - palavra a ser localizada begin Query1.Close ; Query1.SQL.Clear ; if DONDE.Caption = 'Cad_Clientes' then begin Query1.SQL.Add ( 'Select * from Cad_Clientes' ) ; Query1.SQL.Add ( 'Where NOME like "%' + Ed_Pesq.Text + '%" ' ) ; Query1.SQL.Add ( 'Order by NOME' ); end; if DONDE.Caption = 'Cad_Fornecedores' then begin Query1.SQL.Add ( 'Select * from Cad_Fornecedores' ) ; Query1.SQL.Add ( 'Where RAZAO like "%' + Ed_Pesq.Text + '%" ) ' ) ; Query1.SQL.Add ( 'Order by RAZAO' ); end; Query1.Open ; end ; A pesquisa está funcionando perfeitamente. O problema está na definição do array. Obrigado, Bettega.
-
Obrigado pela resposta, mas da forma que você exemplificou ( com 6 linhas ), eu fiz utilizando variáveis. Nos exemplos que eu encontrei, só consigo utilizar array como constante, porém no formato que eu gostaria de fazer, precisaria ser um array com dados variáveis. De qualquer forma, agradeço a atenção. Bettega.