注册 登录
编程论坛 Delphi论坛

关于Delphi 处理循环带计算自动生成数据库行记录

slh2023 发布于 2023-07-19 16:02, 10335 次点击
请教下Delphi开发大咖 问题如下:
我想实现一个功能,列子 字段A 1000 字段B 10050 字段C 地区X
字段B/字段A
想实现:自动生成11行数据库记录
如 :001 地区X 1000
002 地区X 1000
003 地区X 1000
.....
011 地区X 50
这个循环语句要怎么写?
8 回复
#2
slh20232023-07-21 11:17
有人知道吗?
#3
阳光上的桥2023-07-24 15:24
不知道楼主遇到了什么问题,看起来就是连接数据库、执行SQL而已。对于支持一次插入多条的数据库系统就一个INSERT语句(例如MYSQL的INSERT可以在VALUES后面带多组数据)。否则有两种处理方式,一是预处理一个SQL,循环参数执行;二是直接循环执行不同的SQL语句。
#4
slh20232023-07-25 14:18
回复 3楼 阳光上的桥
只有本站会员才能查看附件,请 登录
  版主您好,我想实现这么一个功能需要怎么写循环
#5
阳光上的桥2023-07-31 12:26
究竟是实现什么功能,从界面看不出来,关键是各输入框与文本框的关系,是输入框内容保存到数据库的同时存入文本框呢,还是输入框的内容缓存到文本框里面最后一次性保存到数据库,还是根本没有数据库只用文本框来演示。总之,猜测到你的意图很难,而无论是哪一种意图我都没看出有什么难度,希望你自己着手做,遇到问题再说具体问题。
#6
slh20232023-08-01 11:12
回复 5楼 阳光上的桥
我是想解释我想做什么,左边是输入框的条件右边文本框的内容是我想要呈现在数据库一行一行的记录,不需要缓存
我不会所以我才会咨询没有思路
#7
阳光上的桥2023-08-01 14:19
var
    pADOQ: TADOQuery;
begin
    pADOQ := TADOQuery.Create(nil);
    pADOQ.Connection := ADOCon;
    pADOQ.SQL.Text := 'select * from TableName where 字段1="'+ edit1.Text +'" and 字段2="'+ edit2.Text +'"';
    pADOQ.Open;
    if pADOQ.RecordCount <= 0 then exit;
    pADOQ.First ;//将游标放到结果集的第一条记录
Memo1.text = '';
    while not pADOQ.Eof do//开始循环结果集(当该条记录不是最后一条时)
    begin
Memo1.text := Memo1.text + #13#10 + pADOQ.FieldByName('字段1').AsString;
       pADOQ.Next;
    end;


真的没明白你需要什么帮助,只有猜测着回复,很难让你满意
#8
slh20232023-08-02 14:27
回复 7楼 阳光上的桥
版本您好首先感谢耐心帮助,我在描述一下我的需求:


需求是:在Delphi一个界面有以下几个

最小包装量  edit1.text  
需求量      edit2.text   
地区        ComboBox.text




如:最小包装量     我录入5000
    需求量         我录入14900
    地区           我选择了杭州



单个包装量= 需求量/最小包装量      计算结果 =5000+5000+4900


界面有个BUTTON ,点按键后自动计算并帮我录入SQL SERVER 数据库表对应字段中


数据库表如TEST  字段有三个  (字段1,字段2,字段3)

录入数据库的结果为

字段1(序号)      字段2(单个包装量)        字段3(地区)
001                 5000                      杭州
002                 5000                      杭州
003                 4900                      杭州


这里有两个点:1.序号自动+1  ,2. 循环写入结果
#9
阳光上的桥2023-08-02 15:37
上次回复的代码是对按钮功能理解为查询满足条件的数据清单,看补充的需求,我猜测前面的理解有错,好像是需要把输入内容分成多条记录插入数据,但是不不知道你具体遇到的困难是什么,只有简单描述一下思路:

var
i,x,y,ok,x1: integer;
sql:string;

按钮动作:
val(edit1.text, x, ok);
val(edit2.text, y, ok);
i:=1;
while y>0 do
begin
    if y>x then x1:=x else x1:=y;
    sql := 'insert into test values('+IntToStr(i)+','+IntToStr(x1)+',"'+ComboBox.text+'")';
    执行SQL;
    i := i + 1;
    y := y - x1;
end;

因为不知道你具体困难是什么,写了这些莫名其妙回复,可能会给你带来了不好的感受,我真不是故意的。
1