ADOQuery.FieldByName(s1).AsString; 说找不到s1对应的字段.why?(50)

  • 主题发起人 主题发起人 wxj9527
  • 开始时间 开始时间
W

wxj9527

Unregistered / Unconfirmed
GUEST, unregistred user!
function TMainForm.GetCheckedStr(const checklistbox: TCheckListBox):String;var i:integer;begin Result := ''; for i := 0 to checklistbox.Items.Count-1 do begin if checklistbox.Checked then begin Result := checklistbox.Items.Strings; break; end; end;end;procedure TMainForm.btn_CommitClick(Sender: TObject);var s1,s2:string;begin s1 := GetCheckedStr(clb_source_field); s2 := GetCheckedStr(clb_source_table); with mastdata.ADO_Source do begin Close; SQL.Clear; SQL.Text := 'select '+s1+' from '+s2+' '; Open; showmessage(FieldByName(s1).Asstring); end; //testclb_source_field,clb_source_table是TCheckListBox.为什么报找不到对应的s1字段?
 
FieldByName('''+s1+''').Asstring
 
SQL.Text := 'select '+s1+' from '+s2+' ';//好像不对吧. SQL.Text := 'select '+QuotedStr(s1) +' from '+ QuotedStr(s2);FieldByName(QuotedStr(s1)).Asstring
 
谢谢楼上两位的回答...但不好意思,你们的回答都不正确,如果按你们那样.语句岂不是变成了: select 'field' from 'table' ,这是不合法的..应该select field from table 要看清楚 var s1,s2:string;
 
用Fields.Fields[0].AsString试试
 
试过楼上的....可以```但就是不明白为什么FieldByName不行///
 
就是查询后不知道为什么把字段名搞没了````用别名也可以SQL.Text := 'select '+s1+' as test from '+s2+' ';showmessage(FieldByName('test').Asstring);
 
什么情况下,查询会把字段名搞丢?
 
跟踪一下嘛!不就知道变量s1的全部变化情况了,也就找到问题了!要学会调试,这样的问题应该很容易找到错在哪儿的!
 
跟踪s1完全没问题````一直都是那个值``
 
如果都是一个值,那就有鬼了
 
问题不在s1,,,而是open数据集后字段名没有了```
 
如果 SQL.Text := 'select '+s1+' from '+s2+' ';执行正确,就保证了他应该有字段名s1,
 
procedure TForm1.Button1Click(Sender: TObject);var s1, s2 :string;begin s1 := Edit1.Text; s2 := Edit2.Text; with ADOQuery1 do begin Close; SQL.Clear; SQL.Text := 'select '+s1+' from '+s2+' '; Open; showmessage(FieldByName(s1).Asstring); end;end;这样是可以正确执行的。楼主可能是把s1 ,s2 赋值赋错了
 
没有写错```是不是那个变量出问题了?
 
s1 := GetCheckedStr(clb_source_field); s2 := GetCheckedStr(clb_source_table); ShowMessage(s1 +':'+s2);//看看是否正确
 
试试FindField(s1).AsString吧.
 
试过楼上所有的...都不对```
 
guqiu 的那个富翁都给你用edit的代码试过了,思路没问题。出在GetCheckedStr上,另外你可以 showmessage field[0].name看看啊。我想如果出来一个select 12345 from table 的话,12345是不是能当字段名就难说了。
 

Similar threads

后退
顶部