有两问1.delphi7中出现提示框 access violation at address 06351c10.read of address 06351c10.并且该提示框不掉!!我打叉又会弹出一个。是怎么回事??
2.下面程序单击插入按钮时不能保存内容到数据库中,如果我加上adodataset1.post.就会死机
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Panel2: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
DataSource2: TDataSource;
ADODataSet2: TADODataSet;
Label5: TLabel;
Edit5: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin ADODataSet1.insert;
edit5.SetFocus;
ADODataSet1.FieldByName('学生学号').AsString:=edit5.Text;
ADODataSet1.FieldByName('课程编号').AsString:=edit1.Text;
ADODataSet1.FieldByName('课程名称').AsString:=edit2.Text;
ADODataSet1.FieldByName('考试日期').AsString:=edit3.Text;
ADODataSet1.FieldByName('考试成绩').AsString:=edit4.Text; ADODataSet1.Open;
edit1.Text:='';
edit2.Text:=''; //如果我加上Adodaset1.post;这一句就会出现死机情况,
要是不加这个保存修改的记录到数据库中,就不能保存该记录 edit3.Text:='';
edit4.Text:='';
edit5.text:='';
edit5.SetFocus;
Adodaset1.post;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ADODataSet1.Edit;
edit5.setfocus;
ADODataSet1.FieldByName('学生学号').AsString:=edit5.Text;
ADODataSet1.FieldByName('课程编号').AsString:=edit1.Text;
ADODataSet1.FieldByName('课程名称').AsString:=edit2.Text;
ADODataSet1.FieldByName('考试日期').AsString:=edit3.Text;
ADODataSet1.FieldByName('考试成绩').AsString:=edit4.Text;
ADODataSet1.Open;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.text:='';
edit5.SetFocus;
ADODataSet1.Post;end;procedure TForm1.Button4Click(Sender: TObject);
begin
ADODataSet1.Delete;
ADODataSet1.Post;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
with ADODataSet1 do begin
close;
if edit1.text<>'' then
begin
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and sScourseNo like ''%'+edit1.Text+'%'' ';
open;
edit1.Clear;
edit1.SetFocus;
end
else if edit2.text<>'' then
begin
ADODataSet1.CommandText:=' SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and sScourseName like ''%'+edit2.Text+'%'' ';
open;
edit2.Clear;
edit2.SetFocus;
end
else if edit5.text<>'' then
begin
ADODataSet1.CommandText:= ' SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and tbStudentInfo.sStudentNo like ''%'+edit5.Text+'%'' ';
open;
edit5.Clear;
edit5.SetFocus;
end
else if (edit2.text<>'') and (edit5.text<>'') then
begin
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and tbStudentInfo.sStudentNo like ''%'+edit5.Text+'%'' and sScourseName like ''%'+edit2.Text+'%''';
open;
edit1.Clear;
edit2.Clear;
edit5.Clear;
edit5.SetFocus;
end
else
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo ';
open;
edit5.SetFocus;
end;
end;procedure TForm1.Button6Click(Sender: TObject);
begin
close;
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
selectNext(activecontrol,true,true);
end;end.
2.下面程序单击插入按钮时不能保存内容到数据库中,如果我加上adodataset1.post.就会死机
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Panel2: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
DataSource2: TDataSource;
ADODataSet2: TADODataSet;
Label5: TLabel;
Edit5: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin ADODataSet1.insert;
edit5.SetFocus;
ADODataSet1.FieldByName('学生学号').AsString:=edit5.Text;
ADODataSet1.FieldByName('课程编号').AsString:=edit1.Text;
ADODataSet1.FieldByName('课程名称').AsString:=edit2.Text;
ADODataSet1.FieldByName('考试日期').AsString:=edit3.Text;
ADODataSet1.FieldByName('考试成绩').AsString:=edit4.Text; ADODataSet1.Open;
edit1.Text:='';
edit2.Text:=''; //如果我加上Adodaset1.post;这一句就会出现死机情况,
要是不加这个保存修改的记录到数据库中,就不能保存该记录 edit3.Text:='';
edit4.Text:='';
edit5.text:='';
edit5.SetFocus;
Adodaset1.post;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ADODataSet1.Edit;
edit5.setfocus;
ADODataSet1.FieldByName('学生学号').AsString:=edit5.Text;
ADODataSet1.FieldByName('课程编号').AsString:=edit1.Text;
ADODataSet1.FieldByName('课程名称').AsString:=edit2.Text;
ADODataSet1.FieldByName('考试日期').AsString:=edit3.Text;
ADODataSet1.FieldByName('考试成绩').AsString:=edit4.Text;
ADODataSet1.Open;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.text:='';
edit5.SetFocus;
ADODataSet1.Post;end;procedure TForm1.Button4Click(Sender: TObject);
begin
ADODataSet1.Delete;
ADODataSet1.Post;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
with ADODataSet1 do begin
close;
if edit1.text<>'' then
begin
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and sScourseNo like ''%'+edit1.Text+'%'' ';
open;
edit1.Clear;
edit1.SetFocus;
end
else if edit2.text<>'' then
begin
ADODataSet1.CommandText:=' SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and sScourseName like ''%'+edit2.Text+'%'' ';
open;
edit2.Clear;
edit2.SetFocus;
end
else if edit5.text<>'' then
begin
ADODataSet1.CommandText:= ' SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and tbStudentInfo.sStudentNo like ''%'+edit5.Text+'%'' ';
open;
edit5.Clear;
edit5.SetFocus;
end
else if (edit2.text<>'') and (edit5.text<>'') then
begin
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo and tbStudentInfo.sStudentNo like ''%'+edit5.Text+'%'' and sScourseName like ''%'+edit2.Text+'%''';
open;
edit1.Clear;
edit2.Clear;
edit5.Clear;
edit5.SetFocus;
end
else
ADODataSet1.CommandText:='SELECT tbStudentInfo.sStudentNo 学生学号, sStudentName 学生姓名, sScourseNo 课程编号, sScourseName 课程名称, dTestData 考试日期, fScore 考试成绩'
+' FROM tbStudentInfo, tbScoreInfo'
+' WHERE tbStudentInfo.sStudentNo=tbScoreInfo.sStudentNo ';
open;
edit5.SetFocus;
end;
end;procedure TForm1.Button6Click(Sender: TObject);
begin
close;
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
selectNext(activecontrol,true,true);
end;end.
open用于返回结果集。如select
excel用于执行无需返回结果集,如insert,update,delete
二、不解,你为什么要在这之后Open一下,如果仅仅是为了刷新数据,你本身其实就已经给它赋值了,没必要,如果一定需要,使用refresh可能更好些
delphi的那个错误提示框,可以在任务管理器中结束掉进程 if ADODataSet1.State in [dsedit,dsinsert] then
ADODataSet1.Post;
if ADODataSet1.State in [dsedit,dsinsert] then
ADODataSet1.Post;
没有返回相关的值信息再或者返回时出错》》》》》》