数据库的好多问题,请各位帮忙看下 ( 积分: 24 )

  • 主题发起人 主题发起人 兰凌
  • 开始时间 开始时间

兰凌

Unregistered / Unconfirmed
GUEST, unregistred user!
献上我全部的分了,^_^
这个是数据库还原语句.
sdbName := sPath + 'database.mdb';
sbakName := sPath + lvReData.Selected.Caption;
DeleteFile(sdbName);
CopyFile(Pchar(sbakName), Pchar(sdbName), true);
MessageBox(self.Handle, '数据库还原成功!', '提示', mb_IconInformation + mb_Ok);


编译可以通过,运行也没问题,但是就是没执行结果

procedure TForm3.SetFind(Str1,Str2:String);
begin
AdoQuery1:=TAdoQuery.Create(nil);
AdoQuery1.Connection:=ADOConnection1;
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('update CanShuB set Zhi:=str1');
AdoQuery1.SQL.Add(' where BianHao=:str2');
AdoQuery1.Open;
end;
这个类是修改数据表的内容,但是老出现错误,那里错了?
project1.exe raised exception class EOleException with message
'部正常地定义参数对象.提供了部一致或部完整的信息.'

adodataset1.close;
adodataset1.Parameters.Clear;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='s0';
adodataset1.Parameters[0].DataType:=ftdatetime;
adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=datetimepicker1.Date;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:='s1';
adodataset1.Parameters[1].DataType:=ftdatetime;
adodataset1.Parameters[1].Direction:=pdinput;
adodataset1.Parameters[1].Value:=datetimepicker2.Date;
adodataset1.CommandText:='select * from RiZhiB where Shijian>:s0 and Shijian<:s1';
adodataset1.open;
Adodataset1.FieldByName('Shijian').DisplayLabel:='时间';
Adodataset1.FieldByName('Xinxi').DisplayLabel:='信息';
Adodataset1.FieldByName('ChaoZY').DisplayLabel:='操作员';
Adodataset1.FieldByName('BeiZhu').DisplayLabel:='备注';

根据两个datatimepicker的时间来进行查询.我查询的结果很怪,只有一段时间内的,在那段时间外的数据全部都没了
比如我的日志表内容是5月2号到6月24号的,他查询的只有5月2号到6月11号的.其他的都没了?
我的查询语句有什么问题?



if Edit4.Text<>''then
begin
SQL.Add('and CheDao=:var1');
Parameters.ParamByName('var1').Value :=Trim(Edit4.Text);
end;
提示找不到var1,怎么回事.而且数据类型不匹配,我的数据库中的数据是text类型的
 
献上我全部的分了,^_^
这个是数据库还原语句.
sdbName := sPath + 'database.mdb';
sbakName := sPath + lvReData.Selected.Caption;
DeleteFile(sdbName);
CopyFile(Pchar(sbakName), Pchar(sdbName), true);
MessageBox(self.Handle, '数据库还原成功!', '提示', mb_IconInformation + mb_Ok);


编译可以通过,运行也没问题,但是就是没执行结果

procedure TForm3.SetFind(Str1,Str2:String);
begin
AdoQuery1:=TAdoQuery.Create(nil);
AdoQuery1.Connection:=ADOConnection1;
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('update CanShuB set Zhi:=str1');
AdoQuery1.SQL.Add(' where BianHao=:str2');
AdoQuery1.Open;
end;
这个类是修改数据表的内容,但是老出现错误,那里错了?
project1.exe raised exception class EOleException with message
'部正常地定义参数对象.提供了部一致或部完整的信息.'

adodataset1.close;
adodataset1.Parameters.Clear;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='s0';
adodataset1.Parameters[0].DataType:=ftdatetime;
adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=datetimepicker1.Date;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:='s1';
adodataset1.Parameters[1].DataType:=ftdatetime;
adodataset1.Parameters[1].Direction:=pdinput;
adodataset1.Parameters[1].Value:=datetimepicker2.Date;
adodataset1.CommandText:='select * from RiZhiB where Shijian>:s0 and Shijian<:s1';
adodataset1.open;
Adodataset1.FieldByName('Shijian').DisplayLabel:='时间';
Adodataset1.FieldByName('Xinxi').DisplayLabel:='信息';
Adodataset1.FieldByName('ChaoZY').DisplayLabel:='操作员';
Adodataset1.FieldByName('BeiZhu').DisplayLabel:='备注';

根据两个datatimepicker的时间来进行查询.我查询的结果很怪,只有一段时间内的,在那段时间外的数据全部都没了
比如我的日志表内容是5月2号到6月24号的,他查询的只有5月2号到6月11号的.其他的都没了?
我的查询语句有什么问题?



if Edit4.Text<>''then
begin
SQL.Add('and CheDao=:var1');
Parameters.ParamByName('var1').Value :=Trim(Edit4.Text);
end;
提示找不到var1,怎么回事.而且数据类型不匹配,我的数据库中的数据是text类型的
 
怎么没人啊?
帮忙啊
 
AdoQuery1.Open;
end;
这个类是修改数据表的内容,但是老出现错误,那里错了?

把AdoQuery1.Open; 改成 AdoQuery1.ExecSQL;
 
你的SQL.text先分配值,再用adodataset1.Parameters.Clear;
ADODataSet1.Parameters.CreateParameter()就行了
 
wanghaiou,我本来就是用execSql的,但是不行啊.
jfyes你说的是那个?
 
ExecSQL结果还是不正常定义对象或提供了不一致或部完整的信息.
 
是先有SQL.text属性后,再才有参数
ADODataSet1.Close;
ADODataSet1.SQL.Text := 'SQL属性';
ADODataSet1.Parameters.Clear; // 可以不要,ADODataSet1.SQL属性改变自动清除参数
ADODataSet1.Parameters.CreateParameter('s0', ftdatetime, pdinput, '你的日期 ');
ADODataSet1.Parameters.CreateParameter('s1', ftdatetime, pdinput, '你的日期 ');
ADODataSet1.Open;
 
AdoQuery1.SQL.Add('update CanShuB set Zhi:=str1');
在SQL中恐怕不是这样写的吧!'update CanShuB set Zhi:=str1',应该没有冒号啊!
 
回:兰凌

你学什么的啊!你的数据库好差啊!怎么字段名都用拼音啊!
 
procedure TForm3.SetFind(Str1,Str2:String);
begin
AdoQuery1:=TAdoQuery.Create(nil);
AdoQuery1.Connection:=ADOConnection1;
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('update CanShuB set Zhi:=str1');
AdoQuery1.SQL.Add(' where BianHao=:str2');
AdoQuery1.Open;
end;
这个类是修改数据表的内容,但是老出现错误,那里错了?
project1.exe raised exception class EOleException with message

這個問題  AdoQuery1.SQL.Add('update CanShuB set Zhi:=str1');
     AdoQuery1.SQL.Add(' where BianHao=:str2'); 這兩
     寫成
     AdoQuery1.SQL.Add('update CanShuB set Zhi=str1');
     AdoQuery1.SQL.Add(' where BianHao=str2');
      Adoquery1.execsql
 
那个不关我事哦
数据库是别人建的,我负责写程序而已
我用了execsql了,结果还是一样的啊
 
能不能用通过AdOqeutry (SQL) 来查询数据中某字段的值为 edit中的值、
要完全查询,不要用like
谁知道的帮帮忙!!!!!!!!
 
不是吧,这样这个问题都不知道嘛
AdoQuery1.sql.clear;
AdoQuery1.SQL.Add('update CanShuB set Zhi="'+str1+'"');
     AdoQuery1.SQL.Add(' where BianHao="'+str2+'"');///变量怎么可以直接放到SQL里呢
      Adoquery1.execsql
 
if Edit4.Text<>''then
begin
AdoQuery1.sql.clear;
AdoQuery1.SQL.Add('select * from 表');
AdoQuery1.SQL.Add(' where 字段="'+edit4.text+'"');
Adoquery1.execsql;
end;
这样行不行呀???
 
jelllove
AdoQuery1.SQL.Add(' where BianHao="'+str2+'"')那个变量是不是一个双引号,再加单引号?
 
我看书好象是三个单引号的.
在delphi中很少用到双引号的
 
这个是数据库还原语句.
sdbName := sPath + 'database.mdb';
sbakName := sPath + lvReData.Selected.Caption;
DeleteFile(sdbName);
CopyFile(Pchar(sbakName), Pchar(sdbName), true);
MessageBox(self.Handle, '数据库还原成功!', '提示', mb_IconInformation + mb_Ok);

这个数据库的操作怎么没效果啊.
 
jelllove,我看书是加上单引号,结果编译不过去啊.
 
各位,帮忙啊
急用啊
最近不能上网、
没办法啊
 
后退
顶部