我爱builder

C++Builder 程序员博客

我现在做一个连锁酒店的C/S系统他们每个分店都有自己的数据库,然后作为前台只需要本地服务器,这个好办。然后就是后台账务查询他要查询所有站点的数据也就是多个服务器(数据库)里的数据,比如(有两个站点a和b):他们都有“营业历史”这个表——a.营业历史和b.营业历史,我现在要在后台综合查询这个表如何查询?有什么控件?sql语句如何写?无论c#还是 C++都可以。有多种解决方式
1,建立中央数据库,各前台服务器定时把数据回传同步中央数据库,在中央数据库中查询。
2,使用分布式数据库,可以物理分布逻辑集中,sql与单个数据库一样Oracle可以用
DATABASE LINK做分布式具体要看你使用数据库产品的类型,目前流行的数据库产品(oracle,sqlserver)都支持多数据库查询的,实际上,即使是桌面数据库(access)也支持不同数据库文件之间的访问
另外,某些数据引擎也支持不同数据库之间的访问, 早在多年前,BDE就支持不同数据库别名之间的访问
如:有两个数据别名:别名1和别名2,在别名1中可以跨库访问别名2中的内容
  select * from :别名2:testtable
用一下TADOQuery,然后加上SQL就可以了。只要查到将两条的记录(相同数据库结构)用union 或者union all联合就OK了。
楼上的办法好
SELECT * FROM 营业历史, d:database.营业历史 WHERE XXXXX

  • Filed under: C++ Builder
  • RT,程序目录可选,PATH如何填写,谢谢啦!!没有看懂你的意思

    不想要固定的目录,能否指定到程序安装目录?如上图用ExtractFilePath(Application->ExeName)获取EXE所在目录!!或者程序运行时,取当前路径即可好的,谢谢,我试试,呵呵

  • Filed under: C++ Builder
  • Error 00018. 0×310000 (r) (Thread 0×0960):
    Bad parameter: A bad memory block (0×1AE98D8) has been passed to the
     function.
    SysFreeMem(0×0294C000) 

    Call Tree:
      0×0247F497(=reportprint.dll:0×01:08E497)
      0×0242DCC4(=reportprint.dll:0×01:03CCC4)
      0×0242E1F4(=reportprint.dll:0×01:03D1F4)
      0×02437A63(=reportprint.dll:0×01:046A63)
      0×023F1F53(=reportprint.dll:0×01:000F53)
      0×019D3A26(=rbjtjb.dll:0×01:002A26)不知道是哪里错了?打开窗口的时候老是报错,codeguard报错大家一起讨论讨论

  • Filed under: C++ Builder
  • PARADOX网上资料找了一上午都没找到,问几个基础问题,新建一个表 字段 ID NAME OLD 怎么建立 ID 要自动增长的数字类型 NAME 字符类型 OLD 是数字类型 。命名贴下谢谢,还有常用数据类型是那几个。

    SQL 语句有不 我想点击下程序的按钮 就建立一张表格

  • Filed under: C++ Builder
  • 我要设计一个仪表检测程序,采集仪表的输出量并保存。目前的问题是有的仪表输出的是电流值,有的仪表输出的是脉冲值,那我的想法是在access中设计两种数据表来分别保存,但不知道在查询信息时,如何在DBGrid中显示这两个表中的信息,然后采用不同格式的报表打印。例如,一家公司送来两只表,区别如上述所说的输出量性质,那么当我按公司名称搜索检测记录时,这家公司的两只表应同时显示出来。请哪位高手能给分析下,提供这样的数据库设计思路,谢谢。SQL可以直接连接多个表的啊
    SELECT * from table1,table2 where table1.公司=table2.公司

    SELECT * from table1 inner join table2 on table1.公司=table2.公司
    不知道是不是我没理解楼主的意思~~-_-<
    上学的时候没有学过数据库吗?

    典型的select 语句啊,不需要什么设计思路啊

    adoquery1->Close();
    adoquery1->sql->Clear();
    adoquery1->sql->Text="SELECT * from table1,table2 where table1.公司=table2.公司"
    try
    {
    adoquery1->Open();
    }
    catch(…)
    {
    //error…..
    }建议lz找本SQL的书看看

  • Filed under: C++ Builder
  • 在bcb中用到的控件有ADOQuery,Button1,Button2,Edit1,image1.在数据中已经建好了表Picture(id int,pic,image,);程序里是把D盘中的一张图片存入Picture中,可是那位高手用的是XP+BCB6+Oracle9i,可是我的是XP+BCB6+SQLServer。代码是高手给的,所以希望用SQLServer的高手,修改一下。
    //—————————————————————————

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    #include"jpeg.hpp"
    //—————————————————————————
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //—————————————————————————
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
    {
    }
    //—————————————————————————

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ADOQuery1->Close();
      ADOQuery1->SQL->Text="Insert into Picture values(:id,:pic)";
      ADOQuery1->Parameters->Items[0]->Value=1;
      ADOQuery1->Parameters->Items[1]->LoadFromFile("d:\ FF70.JPG",ftBlob );
      ADOQuery1->ExecSQL();
    }
    //—————————————————————————

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      TMemoryStream *MS;
      TJPEGImage *jpg;
      MS = new TMemoryStream;
      jpg = new TJPEGImage;
      ADOQuery1->Close();
      ADOQuery1->SQL->Text="select id,pic from Picture where id=1";
      ADOQuery1->Open();
      Edit1->Text=ADOQuery1->FieldValues["id"];
      ((TBlobField *)ADOQuery1->FieldByName("pic"))->SaveToStream(MS);
      MS->Position=0;
      jpg->LoadFromStream(MS);
      Image1->Picture->Assign(jpg);
      delete jpg;
      delete MS;
    }
    //[code=C/C++][/code]程序基本没问题
    ADOQuery1->Parameters->Items[1]->LoadFromFile("d:\ FF70.JPG",ftBlob );
    "d:\ FF70.JPG"多了个空格
    我用x2k+bcb6+sqlserver测试通过
    Oracle和SQLServer对于ADO的操作其实差不多,只是ADOConnection的连接不一样!!<
    <

  • Filed under: C++ Builder
  • 有三张数据表角色表、权限表以及这两张表的关系连接表,用DBGrid连接ADOQuery显示角色表里的信息,当要删除角色表里的一个角色时,如何删除关系连接表里的跟这个角色有关的信息?确定删除的信息后,先删除子表的记录信息,再删除关联子表的主表的记录信息<
    角色表里面的key应该是关系表里面的foreign key吧

    如果在数据库中设置外键限制比较好,这样可以省去一些代码数据库完整性
    添加主键 外键<
    <

  • Filed under: C++ Builder
  • 用ibx组件连接firebird,ibdatabase的connected设置为active时会出现登陆窗口,我把那个loginprompt设置为FALSE,再重新连接的话,会出现错误,说用户没有定义。。。,不知道哪里还需要再设置下,还是他只能这样的?不应该这样的,我没有用过ibdatabase,但看上去好像是连接参数不对,用户没定义,可能你在连接参数中指明的用户ID,在数据库中没有找到吧?我没用过ibx组件,我用ado连mysql的

    你看是不是哪里要填写用户名和密码的?

    用是可以用,但是我是想在ibexpert添加记录,删除记录,然后cb中相应的用ibtable中设置active来改变显示的数据,但是如果那边更新了数据,就一定会出这个登陆窗口,不知道它是否可以用代码去实现输入密码的操作?如果是ibtable的话,你有没有用TIBTransaction?
    加一个TIBTransaction,并使它的defaultdatabase指向你的ibdatabase
    将你的ibtable的database指向你的ibdatabase,Transaction指向上面的TIBTransaction就应该OK了
    我是用的这三个控件连接的firebird,然后用了datasouce和dbgrid来显示数据表,但是问题是我在ibexpert中删除了一些字段,然后再重新连接的时候就会出错,dynamic sql error sql error code=-206,column unknow 字段名。不知道为什么,还有就是我说的重新连接要从ibdatabase的connection属性设置开始,然后出现登陆框,要输入密码才有用,然后再去设置ibtable中的active,为甚麽不可以直接只设置ibtable中的active,ado连接的时候是可以这样的,望指教,谢谢 删除字段,当然可能报错,除非删字段时你的表在BCB中没打开且你的字段没有加载在IBTable及DBGrid中(一般数据库设计好,不会轻易改表结构的)
    如要不报错.可用打开IBTable的Fields Editor,删除所有字段,打开DBGrid的Colnums Editor,删除所有字段.
    另外的登陆框问题,我从没遇到过,会不会是你firebird的版本问题?换个版本试试.同意keiy老大说的,加个Transaction,我也一直这么用,没什么问题。

  • Filed under: C++ Builder
  • 学习使用,我下载了几个c++ builder,里面都没有数据库文件,请哪位提供个给我,学习使用,谢谢。。。。你说的是interbase不是呀,网上下一个不就可以了你的意思是没有安装BCB提供的数据库引挚吧?
    是安装盘上没有,还是安装盘上有但是你没安装?好像是我的安装盘上没有,反正就是安装不上去。。。。。就是bcb里面的borlandshare /data里面的db和dbf类型文件,可以传给我吗??我的邮箱是chp845@sina.com!!!

    我的BCB有楼上可不可以发给我呀,我重装了bde,还是没有呀,我是学习,很多资料书上都是那个实例,所以我需要那个,发给我行吗??谢谢了呀。。。

  • Filed under: C++ Builder
  • 我使用IBConsole建立了一个数据库,怎样将该数据库导出到一个gdb文件中?呃。。。没人知道吗?没用过IBConsole,interbase数据库不就是一个gdb文件吗?直接保存你的数据库试试你用interbase什么版本的?一般建库时,就直接写全,全路径。
    在Datebase后面就直接写 c:XXXX.gdb了,不知道你那interbase是怎么做的。interbase数据库文件就是一个gdb文件呵呵。。。知道了,原来每创建一个数据库就会生成一个相应的文件,生成的这个文件就是我要的,谢谢大家的提示。

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档