1.目的:实现在下拉表中选择一条记录,在DBexlookupedit中显示NAME字段,但取值要得到ID字段
我在datafield中选择了NAME,Picklistfield中选择了ID,但只有第一条记录是显示NAME,选择后在编辑框仍显示ID.另外想知道通过PicklistField取值的方法!!2.窗体上部分为DBEdit等数据感知控件,下部分为DBGRID,两部分共用datasourse和Query 相互关联;
Query的语句为:"select A.id,B.code,B.name,A.date_start,A.date_end from t1 A,t2 B where A.id = B.id" 用Query查询出来的为只读数据集,需要用UPDATESQL组件来对数据集进行插入,更新,删除操作!现在可以更新了,但不知如何插入一新行然后编辑后保存!最好有相关的代码例子或其它的更方便的解决方案!!!3.在MDI窗体内子窗体打开后不能关闭,只能最小化,不知是设置的问题还是窗体类型的问题!!如果设为Normal窗体的话,窗体会被MDI主窗体遮住!!以上三个问题,请高手指教!!不胜感激!!本来想出200分,结果提示不能放这么多分,看来级别不够,连分都不能多散!!!呵呵
我在datafield中选择了NAME,Picklistfield中选择了ID,但只有第一条记录是显示NAME,选择后在编辑框仍显示ID.另外想知道通过PicklistField取值的方法!!2.窗体上部分为DBEdit等数据感知控件,下部分为DBGRID,两部分共用datasourse和Query 相互关联;
Query的语句为:"select A.id,B.code,B.name,A.date_start,A.date_end from t1 A,t2 B where A.id = B.id" 用Query查询出来的为只读数据集,需要用UPDATESQL组件来对数据集进行插入,更新,删除操作!现在可以更新了,但不知如何插入一新行然后编辑后保存!最好有相关的代码例子或其它的更方便的解决方案!!!3.在MDI窗体内子窗体打开后不能关闭,只能最小化,不知是设置的问题还是窗体类型的问题!!如果设为Normal窗体的话,窗体会被MDI主窗体遮住!!以上三个问题,请高手指教!!不胜感激!!本来想出200分,结果提示不能放这么多分,看来级别不够,连分都不能多散!!!呵呵
3.第三个文件,你在窗体的onClose事件中,写上 Action := caFree就可以关闭了。
比如编辑的就是
adotable.edit你这里假设绑定的是adoTable
我在datafield中选择了NAME,Picklistfield中选择了ID,但只有第一条记录是显示NAME,选择后在编辑框仍显示ID.另外想知道通过PicklistField取值的方法!!2.窗体 上部分为DBEdit等数据感知控件,下部分为DBGRID,两部分共用datasourse和Query 相互关联;
Query的SQL语句为:
"select A.id,B.code,B.name,A.date_start,A.date_end from t1 A,t2 B where A.id = B.id" 用Query查询出来的为只读数据集,需要用UPDATESQL组件来对数据集进行插入,更新,删除操作!
现在可以更新了,但不知如何插入一新行然后编辑后保存!最好有相关的代码例子或其它的更方便的解决方案!!!
这样应该清楚点!!问题2中绑定的是BDE的query!!
我在datafield中选择了NAME,Picklistfield中选择了ID,但只有第一条记录是显示NAME,选择后在编辑框仍显示ID.另外想知道通过PicklistField取值的方法!!有个笨办法,在NAME和ID之间插入若干空格,具体多少能满足ID字段不能显示就行了。
取ID可以用RightStr(X,Y)来取。
DELPHI好久不用了,这个控件差不多忘了
2、上面有人给出答案
3、在MDI窗体内子窗体打开后可以关闭,在子窗体的 Close事件里设定
Action := caFree;
Form:= nil ;
子窗体的创建可以如下这样:
procedure TFmainForm.ShowForm(InstanceClass: TComponentClass; var Reference);
var
i:integer;
begin
if FmainForm.MDIChildCount > 0 then
begin
for i:= 0 to FmainForm.MDIChildCount-1 do
if FmainForm.MDIChildren[i].ClassName = InstanceClass.ClassName then
exit;
end;
Application.CreateForm(InstanceClass, Reference);
WindowTileVertical1.Execute ;
end;调用ShowForm(TFmMDIChild1,FmMDIChild1);创建子窗体FmMDIChild1