Jump to content
Marcelo_Ribeiro

Delphi - Conexão com Firebird

Recommended Posts

E aí pessoal, tudo bem? 

Quero montar um sistema que irá acessar um banco de dados Firebird em outra máquina. 

Consegui fazer a conexão via socket. Criei um remote data module, criei um server, e pelo socket server, consegui fazer a conexão. 

Mas tem um porém. To usando Firebird. No meu note, tô com o server rodando, e rodei o client tb. Ao mesmo tempo, rodei o client em outro pc. 

Tenho uma tabela teste que possui 6 registros. Ao abrir o client nos 2 pcs, a consulta traz os 6 registros. No meu note, crio um 7º registro. Mas no outro pc, ao consultar, ele só traz 6 registros. Se eu fechar e abrir de novo, ao consultar traz os 7. 

Criei o remote data module como Instancing = Multiple instance e Threading Model = Single. Será que isso tem alguma coisa a ver? 

 

Instalei o Sql Server. Fazendo tudo do mesmo jeito, o Sql server atualiza, mas o firebird não. Será que é limitação?

 

Valeu pessoal 

Abs
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MateusG
      Bom dia,
       
      Tenho um problema, quando quero colocar o foco para uma coluna especifica pelo nome do campo no banco, nao da certo
      porem se eu fizer colocando o numero da ordem da coluna, exemplo coluna 4, ai da certo, mas queria pelo nome do campo
       
      Eu desejava dessa forma, porem assim ele nao da o foco.
      if condicao then grdAjuste.SetFocus('id_codigo'); Agora se eu fizer assim...
      if condicao then grdAjuste.SetFocus(4); assim da, porem dessa forma eu acho errado...
       
      se alguem puder me ajudar...
      Obrigado.
    • By leo.silvagomes
      Boa noite!
      Tenho um programa que importa determinado arquivo CSV para um banco SQL afim de depois comparar os dados entre versões diferentes do mesmo arquivo, por exemplo uma versão do arquivo é do dia 01/09 e outra do dia 15/09, a finalidade do arquivo é comparar o que mudou
      Uso uma procedure para importar os dados do arquivo para um objeto JvMemoryData e outra para alimentar uma ADOProc que faz o insert no SQL com os dados desse JvMD
       
      Ocorre que o arquivo tem um padrão de 38 colunas e algo prox de 1 milhão de linhas! Como o cliente não usa toda a informação na planilha fiz uma opção de importação rápida que faz o input somente das colunas utilizadas, mas mesmo assim o processo de leitura e importação do arquivo demora até 50 min
       
      Como posso deixar isso mais rápido? 
    • By vinihhylian0103
      Estou fazendo um projeto de Delphi escola e nele tenho que gravar dados no SQLITE. Estou usando o seguinte código:
       
      unit UClube; interface uses   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,   FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,   FMX.StdCtrls, FMX.ListView, FMX.DateTimeCtrls, FMX.Edit,   FMX.Controls.Presentation, FMX.TabControl, FireDAC.Stan.Intf,   FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,   FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,   FireDAC.Phys.SQLite, FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs,   FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,   FireDAC.FMXUI.Wait, System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors,   Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.DB, FireDAC.Comp.DataSet,   Data.Bind.Components, Data.Bind.DBScope, FireDAC.Comp.UI, FireDAC.Comp.Client, System.IOUtils; type   TForm1 = class(TForm)     TabControl1: TTabControl;     TabItem2: TTabItem;     tb1: TTabItem;     lvSocio: TListView;     btnSalvar: TButton;     btnCancelar: TButton;     btnEditar: TButton;     btnExcluirr: TButton;     Panel1: TPanel;     edtDataNasc: TDateEdit;     edtCod: TEdit;     edtNome: TEdit;     edtRg: TEdit;     edtCPF: TEdit;     edtEndereco: TEdit;     Label1: TLabel;     Label2: TLabel;     Label3: TLabel;     Label4: TLabel;     Label5: TLabel;     labwl: TLabel;     NOME: TLabel;     Button5: TButton;     Panel2: TPanel;     edtDataA: TDateEdit;     edtCodSocio: TEdit;     Label6: TLabel;     Label10: TLabel;     Label11: TLabel;     Label12: TLabel;     rdbSocio: TRadioButton;     edtNomeA: TEdit;     btnNovoA: TButton;     edtHoraIA: TEdit;     Label7: TLabel;     Edit7: TEdit;     edtHoraFA: TLabel;     edtDescricaoA: TEdit;     Label9: TLabel;     edtValorA: TEdit;     btnCancelarA: TButton;     btnEditarA: TButton;     btnExcluirA: TButton;     btnSalvarA: TButton;     lvAgendamento: TListView;     FDConnPrincipal: TFDConnection;     qrSocio: TFDQuery;     qrAgendamento: TFDQuery;     FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;     FDGUIxWaitCursor1: TFDGUIxWaitCursor;     BindSourceDB1: TBindSourceDB;     BindingsList1: TBindingsList;     LinkListControlToField1: TLinkListControlToField;     LinkControlToField1: TLinkControlToField;     LinkControlToField2: TLinkControlToField;     LinkControlToField3: TLinkControlToField;     LinkControlToField4: TLinkControlToField;     LinkControlToField5: TLinkControlToField;     LinkControlToField6: TLinkControlToField;     qrSocioID: TFDAutoIncField;     qrSocioNOME: TStringField;     qrSocioRG: TStringField;     qrSocioCPF: TStringField;     qrSocioENDERECO: TStringField;     qrSocioDATA_NASC: TDateField;     qrSocioCODIGO: TIntegerField;     qrAgendamentoID: TFDAutoIncField;     qrAgendamentoNOME: TStringField;     qrAgendamentoCODIGO: TIntegerField;     qrAgendamentoDESCRICAO: TWideMemoField;     qrAgendamentoDATA: TDateField;     qrAgendamentoHORA_INICIO: TStringField;     qrAgendamentoHORARIO_FIM: TStringField;     qrAgendamentoVALOR: TLargeintField;     qrAgendamentoSOCIO: TStringField;     procedure rdbSocioChange(Sender: TObject);     procedure btnSalvarClick(Sender: TObject);     procedure Button5Click(Sender: TObject);     procedure btnCancelarClick(Sender: TObject);     procedure btnEditarClick(Sender: TObject);     procedure btnExcluirrClick(Sender: TObject);     procedure FormShow(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end; var   Form1: TForm1; implementation {$R *.fmx} procedure TForm1.btnCancelarClick(Sender: TObject); begin qrSocio.Cancel; Panel1.Enabled := False; end; procedure TForm1.btnEditarClick(Sender: TObject); begin if qrSocio.RecordCount > 0 then begin   qrSocio.Edit;   Panel1.Enabled := True;   edtNome.SetFocus; end; end; procedure TForm1.btnExcluirrClick(Sender: TObject); begin if qrSocio.RecordCount = 0 then abort; qrSocio.Delete; ShowMessage('Dados excluídos!'); end; procedure TForm1.btnSalvarClick(Sender: TObject); begin if edtNome.Text = '' then begin ShowMessage('O nome não pode estar vázio!'); edtNome.SetFocus; abort; end; qrSocio.Post; qrSocio.Refresh; Panel1.Enabled := False; end; procedure TForm1.Button5Click(Sender: TObject); begin Panel1.Enabled := True; edtNome.SetFocus; qrSocio.Append; end; procedure TForm1.FormShow(Sender: TObject);   begin   FDConnPrincipal.Connected := True;   try  {$IF DEFINED (IOS) or DEFINED (ANDROID)}   FDConnPrincipal.Params.Values['DATABASE'] := TPath.Combine(TPath.GetDocumentsPath, 'BD_CLUBE.s3db');   {$ENDIF}   except on E: Exception do   ShowMessage(e.Message);   end;   qrSocio.Open(); end; procedure TForm1.rdbSocioChange(Sender: TObject); begin  if rdbSocio.IsChecked = true then  begin  edtCodSocio.Enabled := true;  edtCodSocio.SetFocus;  end; end; end.
      E recebo o seguinte erro: 
    • By AlexandrePrezzi
      Boa tarde...
       
      Alguém por acaso ja enfrentou problemas com lentidão do update ... usando Firebird no PHP ...
       
      Por exemplo se eu for atualizar 2 itens (registros) (vindos de uma consulta) faz rápido ... 0.237 ms

      Mas se eu pegar por exemplo  50 itens (registros) ... o tempo total vai pra quase 1 minuto .... 
       
      Obs.:  é um update relativamente simples .. ele atualiza apenas 1 (um) campo de cada registro....
       
      Caso alguém tenha passado por algo parecido ou tenha alguma ideia e puder me ajudar agradeço...
    • By Amanda Venturini
      Ja habilitei a extençao no XAMPP,  e ja tentei no Wampserver tambem
      Aqui esta o codigo
      <?php 
      $servidor = '127.0.0.1/3050:C:/TUTORIAL.FDB';
      //conexão com o banco, se der erro mostrara uma mensagem.
      if (!($dbh=ibase_connect($servidor, 'SYSDBA', 'masterkey')))
              die('Erro ao conectar: ' .  ibase_errmsg());
      //Fazer uma consulta no banco.
      //Instruções SQL
      $sql = 'SELECT * FROM fornecedores';
      //Executa a instrução SQL
      $re= ibase_query($dbh, $sql);
      $num= ibase_affected_rows($re);
      //gera um loop com as linhas encontradas    
            if($num > 0){
              while($linha = ibase_fetch_object($re)){
                echo "
                <p>{$linha->COD_FORNEC}</p>
                      <p>{$linha->NOME_FORNEC}</p>
                          <p>{$linha->EMAIL}</p>";
              } 
            }else{
              echo "Nenhum foodtruck encontrado";
            }
      // //Libera a memoria usada
      ibase_free_result($query);
      // //fecha conexão com o firebird
      ibase_close($dbh);
      ?>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.