我的表格如下:(学生号,学生名,。)
(学科号,学科名,。。)
(学生号,学科号,成绩)
//下划线为主码因为考虑到使用的习惯,因此我将学科号转成学科名以dbcombobox显示,当我插入的时候出现问题,当我输入了学生号,在dbcombobox选择了‘语文’,填好了成绩后,用insert 和edit进行插入,提示错误。究竟是什么原因啊?
(学科号,学科名,。。)
(学生号,学科号,成绩)
//下划线为主码因为考虑到使用的习惯,因此我将学科号转成学科名以dbcombobox显示,当我插入的时候出现问题,当我输入了学生号,在dbcombobox选择了‘语文’,填好了成绩后,用insert 和edit进行插入,提示错误。究竟是什么原因啊?
或者用EH控件
PcomBoList = ^TComBoList;
TComboList = record
id : integer;
name : string;
end;
ComList : TList;
装载数据
procedure TEHLibClass.InitCombox(Sender: TObject; sqlstr, keyName,
keyID: string);
var i : integer;
p : PcomBoList;
begin
if sqlstr <> '' then
begin
with FADOQ do
begin
Close;
Sql.Clear;
Sql.Add(sqlstr);
open;
First;
if RecordCount <> 0 then
begin
if UpperCase(TComponent(Sender).ClassName) = UpperCase('TComboBox') then
begin
TComboBox(Sender).Items.Clear;
TComboBox(Sender).Items.BeginUpdate;
for i := 0 to RecordCount - 1 do
begin
new(p);
p.id := Fieldbyname(keyID).AsString;
p.name := Fieldbyname(keyName).AsString;
ComList.add(p);
if keyName <> '' then
TDBComboBox(Sender).Items.Add(Fieldbyname(keyName).AsString);
Next;
end;
TComboBox(Sender).Items.EndUpdate;
end else if UpperCase(TComponent(Sender).ClassName) = UpperCase('TDBComboBoxEH') then
Begin
TDBComboBoxEH(Sender).Items.Clear;
TDBComboBoxEH(Sender).KeyItems.Clear;
TDBComboBoxEH(Sender).Items.BeginUpdate;
for i := 0 to RecordCount - 1 do
begin
if keyID <> '' then
TDBComboBoxEH(Sender).KeyItems.Add(Fieldbyname(keyID).AsString);
if keyName <> '' then
TDBComboBoxEH(Sender).Items.Add(Fieldbyname(keyName).AsString);
Next;
end;
TDBComboBoxEH(Sender).Items.EndUpdate;
End
end;
end;
end;
end;取出ID和显示值TComBoBox
if ComboBox.itemIndex <> -1 then
begin
id := PcomBoList(ComList[ComBox.itemIndex]).id;
name := PcomBoList(ComList[ComBox.itemIndex]).name;
end;
TDBComBoBoxEH
if DBComboBoxEH.itemIndex <> -1 then
begin
id := DBComboBoxEH.value;
name := DBComboBoxEH.Text;
end;