delphi里关于DBgrid,DBNavigator,DBEdit的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi里关于DBgrid,DBNavigator,DBEdit的问题相关的知识,希望对你有一定的参考价值。

unit Unit12;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls,DB, DBTables,ComCtrls, Grids, DBGrids,
DBCtrls, Mask;
type
TForm12 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
Panel2: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
Private declarations
public
Public declarations
end;

var
Form12: TForm12;

implementation

uses Unit2;

$R *.dfm

procedure TForm12.BitBtn1Click(Sender: TObject);
begin
DataModule2.SortTable.ApplyUpdates;
DataModule2.SortTable.cachedupdates:=false;
DataModule2.SortTable.Active:=false;
showmessage('修改成功!') ;
modalresult:=mrok;
end;

procedure TForm12.BitBtn2Click(Sender: TObject);
begin
DataModule2.SortTable.cancelUpdates;
DataModule2.SortTable.cachedupdates:=false;
DataModule2.SortTable.Active:=false;
Form12.Close;
end;

procedure TForm12.FormCreate(Sender: TObject);
begin
with datamodule2.SortTable do
begin
DatabaseName:='sell';
TableName:='SortTable.DB';
IndexFieldNames:='SortNo';
end ;
end;

procedure TForm12.FormActivate(Sender: TObject);
begin
DataModule2.SortTable.Active:=true;
DataModule2.SortTable.cachedupdates:=true;
end;
end.
各控件属性也都设置好了无误,
我有别的窗口和这个差不多的,运行打开窗体,数据直接就在DBGrid,相应字段也在相应的DBEdit里了,就是这个窗体,运行了也不见数据,高手请帮忙看看吧!

是设置不对,数据库程序看代码看不出很多问题。只能作如下猜测:
一、DBgrid,DBNavigator,DBEdit的DataSource属性中有没有TDataSource,如果没有,那就不能显示。你单元文件中没看到使用TDataSource控件。
二、你的Unit2单元里放的是数据库控件,如果是这样,并且该单元中有TDataSource控件,那你要在本单元中,将DBgrid,DBNavigator,DBEdit的DataSource属性设置相应DataSource;
三、Unit2单元中的TDataSource控件中DataSet属性是设置相应的tabel或Query;
如果都进行了相应设置,你上面的问题就解决了。追问

我的Unit2是一个data module,那里有Table和DataSourse,问题找到了,是active和cachedupdates应该设成true,谢谢你。

参考技术A 查看下窗体Grid、DataSource、DataSet等之类的连接是否正确。

如何在DBGrid里实现Shift+“选择行”区间多选的功能!

DELPHI 的TDBGrid 控 件 主 要 用 来 处 理 数 据 表, 它 的 属 性 中 有 
一 个dgMultiSelect, 若 此 属 性 设 定 为TRUE, 则 可 以 选 中 多 个 记 录
( 可 用CTRL + 鼠 标 左 键 选 择 多 个 记 录)。 对 选 中 的 多 个 记 录
可 以 有 以 下 几 种 处 理 方 式, 比 较 简 单 的 两 种 是: 清 除 所 有
的 选 择 记 录 可 用DBGrid1.SelectedRows.Clear 语 句; 删 除 所 有 的 选 
择 记 录 可 用DBGrid1.SelectedRows.Delete 语 句。 但 如 果 想 获 得 选 中 
的 所 有 记 录 的 其 他 信 息, 比 如, 在 单 独 的 一 个 窗 体 中 显 示
用 户 选 择 的 记 录 的 第 一 个 字 段 的 内 容( 如 所 有 选 择 的 姓 名)
如 何 处 理 呢 ? 这 就 要 使 用 书 签 功 能 了, 下 面 是 笔 者 编 写 的
一 个 程 序 中 的 过 程, 用 来 将 用 户 选 择 的 多 个 记 录 集 中 显 示 
在 另 外 一 个 窗 体 中( 笔 者 使 用 的 是DELPHI4), 供 参 考 使 用。


procedure GetSelectedRecord
(DataSet : TDataSet; FieldName : String;
BookmarkList : TBookmarkList; Strings : TStrings);
file://这个过程中的参数分别为:数据表、字段名称、
书签、用来保存所选字段内容的
file://字符串(用于将内容传递到另
一个单独窗体中的TLIST控件中)
var
I: Integer;
bm : TBookMark;
begin
Strings.Clear;
with Dataset do begin
DisableControls;
bm := GetBookMark;
try
file://每个选择的记录都有一个书签标志,
这就为处理它们提供了条件
for I := 0 to BookmarkList.Count - 1 do begin
Bookmark := BookmarkList[I];
Strings.Add(DataSet.FindField(fieldname).AsString);
end;
finally
GotoBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
end;
end;

调用举例:
GetSelectedRecord(Table1, ‘NAME‘, DBGrid1.SelectedRows, 
Form2.ListBox1.Items

 

以上是关于delphi里关于DBgrid,DBNavigator,DBEdit的问题的主要内容,如果未能解决你的问题,请参考以下文章

delphi 能实现dbgrid 一行表格 显示 两行文字;即一行表格的文字可以换行。怎么实现?

delphi dbgrid 怎么才能只选中第一列

delphi DBGrid 怎样修改显示的记录而不改变数据库的值

怎样在delphi取 dbgrid的一列值来进行二次查询?

delphi dbgrid用shift多选?

delphi中的dbgrid数据操作