我现在正在做一个三层的应用系统,客户端并发100个左右。第一次做多层系统,水平实在比较菜。数据库用sqlserver,应用服务器用datebase连接数据库,属性如下:Aliasname为ODBC1,datebasename为DB_ODBC1。客户端用DCOM连接远端服务器。程序在本地编译运行,一直很正常。今天拿到另外一台机器运行,数据库设置和ODBC设置都一样,但是无法运行,提示错误:DB_ODBC1找不到 :(不知道是什么原因?另外请教这样的结构是否合理?如果有不同意见,请指点。
调试欢乐多
你可以比较看看
给你一个例子:
procedure TForm1.FormShow(Sender: TObject);
var
root: TextFile;
server,name,password: string;
connection:string;
myado:tadotable;
begin
form1.dianjiaoshi_name:=tstringlist.Create;
form1.dianjiaoshi_num:=tstringlist.Create;
form1.dianjiaoshi_state:=tstringlist.Create;
form1.jiaoshi_name:=tstringlist.Create;
form1.jiaoshi_num:=tstringlist.Create;
form1.jiaoshi_xi:=tstringlist.Create; try
AssignFile(root,'c:\root.ini'); { File selected in dialog }
Reset(root);
Readln(root, server); { Read first line of file }
Readln(root, name);
Readln(root, password);
CloseFile(root);
except
messagedlg('无法找到启动文件!请配置系统后使用!',mtWarning,[mbOk],0);
//form1.ShowModal;
form1.N6.OnClick(nil);
showmessage('请重新启动系统!');
form6.Close;
form1.Close;
exit;
end;
//connection:='Provider=SQLOLEDB.1;Password=love;Persist Security Info=True;User ID=sa;Initial Catalog=djsh;Data Source=lily;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=LILY;Use Encryption for Data=False;Tag with column collation when possible=False'; connection:='Provider=SQLOLEDB.1;Password='''+password+''';Persist Security Info=True;User ID='''+name+''';Initial Catalog=djsh;Data Source='''+server+''';';
connection:=connection+'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID='''+server+''';Use Encryption for Data=False;Tag with column collation when possible=False'; form1.ADOConnection1.ConnectionString:=connection;try
form1.ADOConnection1.Connected:=true;
myado:=tadotable.Create(self);
myado.Connection:=form1.ADOConnection1;
myado.TableName:='classroom';
myado.Open;
while not myado.Eof do
beginform1.dianjiaoshi_name.Add(trim(myado.FieldValues['教室名称']));
form1.dianjiaoshi_num.Add(trim(myado.FieldValues['教室编号']));
form1.dianjiaoshi_state.Add(trim(myado.FieldByName('当前状态').AsString));
myado.Next;
end;
form1.ComboBox10.Items.Assign(form1.dianjiaoshi_num);myado.Close;
myado.Free;
myado:=tadotable.Create(self);
myado.Connection:=form1.ADOConnection1;
myado.TableName:='teacher';
myado.Open;
while not myado.Eof do
begin
form1.jiaoshi_name.Add(trim(myado.FieldValues['教师姓名']));
form1.jiaoshi_num.Add(trim(myado.FieldValues['教师编号']));
form1.jiaoshi_xi.Add(trim(myado.FieldValues['所属系']));
myado.Next;
end;
form1.ComboBox11.Items.Assign(form1.jiaoshi_num);
myado.Close;
myado.Free;
except
form1.N5.Enabled:=false;
form1.N11.Enabled:=false;
form1.N16.Enabled:=false;
form1.depart.Visible:=false;messagedlg('服务器连接失败!请确认系统是否正确配置!',mtWarning,[mbOk],0);
form1.N6.OnClick(nil);
sleep(2000);
form1.close;
end;
form1.N5.Enabled:=false;
form1.N11.Enabled:=false;
form1.N16.Enabled:=false;
form1.depart.Visible:=false;end;procedure TForm1.N12Click(Sender: TObject);
begin
form1.ADOTable1.Close;
form1.ADOTable1.Open;
form1.depart.Visible:=true;
form1.depart.ActivePageIndex:=0;
form1.teacher.Visible:=true;
form1.depar.Visible:=false;
form1.classroom.Visible:=false;
form1.distribute.Visible:=false;
form1.find1.Visible:=false;
form1.find2.Visible:=false;
form1.application.Visible:=false;
//form1.PageControl.ActivePageIndex:=0;end;
在另一台机器上?
ClientDataSet_Query1.CommandText:=tempstr;
ClientDataSet_Query1.open;是否服务器端的ADOquery或者datasetprovider什么地方设置不对?还是程序有问题?