我写了一个图书管理系统
可是只能再自己得机子上运行
请问是怎么啦
大家帮帮我啊
我刚学数据库编程,好多都不懂 
function TMainF.CheckUser(AUserName , AUserPwd : string):integer;
var
  Query : TQuery;
begin
  try
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('select * from tsyhb where UserName=:UserName');
    Query.ParamByName('UserName').AsString := AUserName;
    Query.Open;
    if Query.RecordCount = 0 then
    begin
      MessageDlg('用户名错误',mtError,[mbok],0);
      Result := -1;
      Exit;
    end
    else begin
      if Query.FieldByName('UserPwd').AsString <> AUserPwd then
      begin
        MessageDlg('用户名或口令错误',mtError,[mbok],0);
        Result := -1;
        Exit;
      end
      else Result := Query.FieldByName('Class').AsInteger;
    end;
    Query.Close;
    Query.Free;
  except
     Result := -1;
     MessageDlg('连接数据库出错',mtError,[mbok],0);
  end;
end;
每回我登录的时候总是告诉我   连接数据库出错
可是在装了delphi的机子上就能用,什么问题都没有啊!!
高手们帮帮我阿 !!!

解决方案 »

  1.   

    先安装Mdac2.8
    http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=zh-cn
      

  2.   

    连接数据库用的BDE打包时别忘了!!
      

  3.   

    你用的是BDE,发布时不好办,用ADO做一般就不会有问题
      

  4.   

    数据库还是什么库?要配置好。
    如果用的BDE配置就麻烦一些。用Wise 可以自动配置。
      

  5.   

    你没有BDE,打包时把BDE打进去,为什么不用ADO呢?
      

  6.   

    建议用ado把,没这么多麻烦,而且对ms的数据库支持比bde要好
      

  7.   

    呵呵
    老问题了
    初学的就用ADO吧
    不用想那么多
      

  8.   

    在其它机子上装个BDE,然后建立别名
      

  9.   

    建议你在公共数据单元中使用database控件,在数据单元中定义执行方法,连接数据库,可测试连接是否正常。
    在每个连接数据库的控件中 
     Query.DatabaseName := 数据模块.database.databasename即可。
    一次连接成功一直使用减少连接的时间。
    另外如果你使用的是delphi自带的PARADOX数据库,你可以直接这样写
     Query.DatabaseName := 数据表的存放路径+表名
      

  10.   

    建议用ado把,没这么多麻烦,而且对ms的数据库支持比bde要好
      

  11.   

    建议用ado把,没这么多麻烦,而且对ms的数据库支持比bde要好
    、这是我的想法啊
    bde快淘汰了
      

  12.   

    unit uGloabVar;interfaceuses
      classes, comctrls, registry,Sysutils,windows,Printers,Dialogs;Const  UserIDLength = 10;
      CodeLength = 10;
      GroupIDLength = 2;
    var
      DBName : string='';
      BackName : string='';
      ViewOper : boolean = True;
      ViewBookMgr : boolean = True;
      ViewSettingMgr : boolean = True;
      ViewAbout : boolean = True;
      ViewBack : boolean = True;
      OutDay : integer= 60;
      FineDay : Extended = 0.1;
      PrintLinesCount : integer= 50;procedure ReadFromReg;
    procedure WriteReg;
    procedure GetStr(var Str: TStringList;ListView : TListView;
                     Title : string;LinesCount : integer);
    procedure PrintListView(ListView : TListView;Title:string);
    procedure SaveListView(ListView : TListView;Title,PathAndName:string);implementation
    procedure ReadFromReg;
    var
      Reg : TRegistry;
    begin
      Reg := TRegistry.Create;
      Reg.RootKey := HKey_CURRENT_USER;
      if not Reg.KeyExists('SoftWare\图书管理系统') then
      begin
        Reg.OpenKey('SoftWare\图书管理系统',True);
        Reg.WriteBool('ViewOper',True);
        Reg.WriteBool('ViewBookMgr',True);
        Reg.WriteBool('ViewSetting',True);
        Reg.WriteBool('ViewAbout',True);
        Reg.WriteBool('ViewBack',True);
        Reg.WriteString('DataPath','"'+GetCurrentDir+'\Data'+'"');
        Reg.WriteInteger('OutDay',OutDay);
        Reg.WriteFloat('FineDay',FineDay);
        Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
        DBName := GetCurrentDir+'\Data';
        Reg.WriteString('BackGroundName','""');
      end
      else begin
        Reg.OpenKey('SoftWare\图书管理系统',False);
        try
          ViewOper := Reg.ReadBool('ViewOper');
        except
          Reg.WriteBool('ViewOper',True);
        end;    try
          ViewBookMgr := Reg.ReadBool('ViewBookMgr');
        except
          Reg.WriteBool('ViewBookMgr',True);
        end;    try
          ViewSettingMgr := Reg.ReadBool('ViewSetting');
        except
          Reg.WriteBool('ViewSetting',True);
        end;    try
          ViewAbout := Reg.ReadBool('ViewAbout');
        except
          Reg.WriteBool('ViewAbout',True);
        end;    try
          ViewBack := Reg.ReadBool('ViewBack');
        except
          Reg.WriteBool('ViewBack',True);
        end;    try
          DBName := Reg.ReadString('DataPath');
        except
          Reg.WriteString('DataPath',GetCurrentDir+'\Data');
          DBName := GetCurrentDir+'\Data';
        end;    try
          BackName := Reg.ReadString('BackGroundName');
        except
          Reg.WriteString('BackGroundName','');
          BackName := '';
        end;    try
          OutDay := Reg.ReadInteger('OutDay');
        except
          Reg.WriteInteger('OutDay',OutDay);
        end;    try
          FineDay := Reg.ReadFloat('FineDay');
        except
          Reg.WriteFloat('FineDay',FineDay);
        end;    try
          PrintLinesCount := Reg.ReadInteger('PrintLinesCount');
          if PrintLinesCount<5 then
            PrintLinesCount := 5;
        except
          Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
        end;
      end;
      Reg.Free;
    end;procedure WriteReg;
    var
      Reg : TRegistry;
    begin
      Reg := TRegistry.Create;
      Reg.RootKey := HKey_CURRENT_USER;
      Reg.OpenKey('SoftWare\图书管理系统',True);
      Reg.WriteBool('ViewOper',ViewOper);
      Reg.WriteBool('ViewBookMgr',ViewBookMgr);
      Reg.WriteBool('ViewSetting',ViewSettingMgr);
      Reg.WriteBool('ViewAbout',ViewAbout);
      Reg.WriteBool('ViewBack',ViewBack);
      Reg.WriteString('DataPath',DBName);
      Reg.WriteString('BackGroundName',BackName);
      Reg.WriteInteger('OutDay',OutDay);
      Reg.WriteFloat('FineDay',FineDay);
      if PrintLinesCount<5 then
        PrintLinesCount := 5;
      Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
      Reg.Free;
    end;procedure GetStr(var Str: TStringList;ListView : TListView;
                     Title : string;LinesCount : integer);
    var
      i : integer;
      j : integer;
      Lines : integer;
      PageCount : integer;
    begin
      PageCount := 1;
      Lines := 0;
      for i := 0 to ListView.Items.Count-1 do
      begin
        if Lines= 0 then
        begin
          Str.Add(Title+'    打印时间: '+DateToStr(Date));
          Inc(Lines);
          Str.Add('');
          Inc(Lines);
        end;
        Str.Add(ListView.Columns[0].Caption+' : '+ ListView.Items[i].Caption);
        Inc(Lines);
        if Lines>LinesCount then
        begin
          Lines := 0;
          Str.Add(#12);
        end;    for j := 0 to ListView.Columns.Count-2 do
        begin
          if Lines= 0 then
            Str.Add(Title);
          Str.Add(ListView.Columns[j+1].Caption+' : '+ ListView.Items[i].SubItems.Strings[j]);
          Inc(Lines);
          if Lines>LinesCount-2 then
          begin
            Lines := 0;
            Str.Add('');
            Str.Add('         --第 '+IntToStr(PageCount)+' 页--');
            Str.Add(#12);
          end;
          if Lines= 0 then
          begin
            Str.Add(Title+'    打印时间: '+DateToStr(Date));
            Inc(Lines);
            Str.Add('');
            Inc(Lines);
          end;
        end;
        Str.Add('...............................');
        if Lines>LinesCount-2 then
        begin
          Lines := 0;
          Str.Add('');
          Str.Add('         第 '+IntToStr(PageCount)+' 页');
          Str.Add(#12);
        end;
      end;
    end;procedure PrintListView(ListView : TListView;Title:string);
    var
      S : TStringList;
      f : TextFile;
      i : integer;
    begin
      S := TStringList.Create;
      GetStr(S,ListView,Title,PrintLinesCount);
      AssignPrn(f);
      try
        Rewrite(f);
        for i := 0 to S.Count-1 do
          Writeln(f,S[i]);
        CloseFile(f);
      except
        MessageDlg('打印失败',mtError,[mbok],0);
        CloseFile(f);
      end;
      S.Free;
    end;procedure SaveListView(ListView : TListView;Title,PathAndName:string);
    var
      S : TStringList;
    begin
      S := TStringList.Create;
      GetStr(S,ListView,Title,PrintLinesCount);
      S.SaveToFile(PathAndName);
      S.Free;
    end;end.是不是只要把我的数据改成ADO就行了啊
      

  13.   

    要是你用了BDE数据库,你用了别名吗 /
    要先在BDE下建个别名先!
      

  14.   

    最好还是用ADO,建议找本书看一下!
      

  15.   

    delphi安装盘上好像有bde
    装上
    然后配置bde
      

  16.   

    我记得delphi有 一个打包程序,去找找看 
      

  17.   

    又是BDE,ADO,,都好老的话题了
      

  18.   

    打包用InstallShield  for Delphi就行
      

  19.   

    如果是MS SQL-6.5,建议用BDE
    如果是MS SQL-7.0以上,建议用ADO
      

  20.   

    Query.DatabaseName:=数据库存放的目录