DELPHI 对比更新SQL 200分

我发现好困难,字有点多,但我认为叙述很详细了withadoquery1dobeginclose;sql.clear;sql.text:='select*fromfindb... 我发现好困难,字有点多,但我认为叙述很详细了
with adoquery1 do
begin
close;
sql.clear;
sql.text:='select * from findb where BU='''+edit1.text+'''';
open;
end;
查询出结果
字段A 字段B 字段C
15*12*3 1/2 A
15*12
16*7 3/4
16*7 3/4*8 B
16*7 3/4
在结果集中如果发现 字段B不是NULL的就把 字段A带有/的转化成小数,比如 3 1/2转化成3.5
再判断 第2个 * 之前的字符串在结果集中有没重复,
比如 15*12* 3 1/2 第二个*之前是15*12就有重复,那么在 15*12那行数据的字段C填写 15*12*3 1/2 +
A公式(因为字段B是A)
如果是listview我就搞定了,但是dbgrid我搞不定
我首先遍历表,所有的我都在外部得到了结果,list都是Tstrlings类型
listA得到的是 所有的字段A
listB得到的是 所有的字段B
listC得到的是 所有的字段C
我先for i:= 0to lista.count -1 do 得到listA的数量
然后再 判断 if listb[i] <> '' then
得出了字段B不是空的结果 ,在次基础上
list1 得到第一个*号前面的字符串
list2 得到第一个*号和第二个*号之间的字符串
list3 得到第二个*号后面的字符串
listZ 得到自由字母的字段C
然后我再 for J := 0 to list1.count -1 do
得到了/的位置,并把该条数据转化成为了小数
再然后我用 listA[i] + 'A'= list1[j]+list2[j] + listZ[j]
就得出了需要修改的地方了
如果是LISTVIEW,我直接就可以赋值了,但是是dbgrid,我不知道如何赋值,求教呀...
展开
 我来答
哎呀……18a91a6
2013-11-20 · TA获得超过4.2万个赞
知道大有可为答主
回答量:7246
采纳率:76%
帮助的人:3019万
展开全部
你打了很多字,但从你的论述中无法找到:
1、你想干什么。
2、你在干什么。
3、你碰到问题的最简单的论述。
所以,你这样论述,别人是无法理解你的。

要想别人懂你,你首先要以最简化的语言,组织好“主、谓、宾”语。
这对程序编写员来说尤为重要!

仅就最后一句:“dbgrid,我不知道如何赋值”给你以下提示:
1、dbgrid,无法直接对单元格进行操作,因为它与数据组件相绑定,它里面显示的值是对应的数据组件里的数据。
2、修改dbgrid里某单元格的值,一漏埋纤般就相当于修改对应的数据组件里的数据,反过来,修改对应的数据组件里的数据dbgrid里的值就会自返仿动变化。
3、所以,要改dbgrid里的单元格的数据,一般就直接改数据组件里的数据,这同时一般也会对你的数据库里的数液敬据进行修改。
4、具体的操作,按你上面的论述,应该直接对“adoquery1”控件进行操作。具体的语法在数据组件联接好,即adoquery1 被open后,类似:
ADOQuery1.FieldByName('字段B').AsString = '你想写入的值'
a470198949
2013-11-20 · TA获得超过359个赞
知道小有建树答主
回答量:592
采纳率:59%
帮助的人:202万
展开全部
你能不能把你要查询的结果还有表的数据列出来,让我看一下。这样不懂你的意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式