ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
QuotedStr( 卡住的地方) + ')';
ADOQuery1.ExecSQL;
jrlnum是个值增加1的字段,我想查出当前的最大值,再将值插入进去,怎么写啊?
7 个解决方案
#1
var
vNum : integer;
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;
inc(vNum);
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
InttoStr(vNum) + ')';
ADOQuery1.ExecSQL;
#2
步骤
1.插入前先得到表的最大值
2.新的值(要插入的)=步骤1的值+1;
3.插入
引用1楼的
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;//取到已有的最大值
inc(vNum);加一,得到要插入的最大值
1.插入前先得到表的最大值
2.新的值(要插入的)=步骤1的值+1;
3.插入
引用1楼的
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;//取到已有的最大值
inc(vNum);加一,得到要插入的最大值
#3
如果jrlnum是自增长字段,可以不用处理。
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) +')';
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) +')';
ADOQuery1.ExecSQL;
#4
如果是oracle数据库可以用sequence来实现
select seq.nextval from dual呵,楼上几位说的都很详细
select seq.nextval from dual呵,楼上几位说的都很详细
#5
1,如果jrlnum是自增长字段,可以不用处理。
2,如果不是可以在SQL Server中创建一个函数获取jrlnum最大值。
例如创建一个函数GetMax()获取charge_log_ecard表中jrlnum字段最大值。
CREATE FUNCTION [dbo].[GetMax]()
RETURNS int
AS
BEGIN
declare @max int
select @max=max(jrlnum) + 1 from charge_log_ecard
return @max
END
然后
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
GetMax() + ')';
ADOQuery1.ExecSQL;
2,如果不是可以在SQL Server中创建一个函数获取jrlnum最大值。
例如创建一个函数GetMax()获取charge_log_ecard表中jrlnum字段最大值。
CREATE FUNCTION [dbo].[GetMax]()
RETURNS int
AS
BEGIN
declare @max int
select @max=max(jrlnum) + 1 from charge_log_ecard
return @max
END
然后
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
GetMax() + ')';
ADOQuery1.ExecSQL;
#6
如果没有多人同时操作此表,无所谓
否则
感觉最好还是把字段整成自增的,要不然同时操作就不保险了。。。
否则
感觉最好还是把字段整成自增的,要不然同时操作就不保险了。。。
#7
以上的答案都挺好的。学习了。谢谢。结贴
#1
var
vNum : integer;
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;
inc(vNum);
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
InttoStr(vNum) + ')';
ADOQuery1.ExecSQL;
#2
步骤
1.插入前先得到表的最大值
2.新的值(要插入的)=步骤1的值+1;
3.插入
引用1楼的
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;//取到已有的最大值
inc(vNum);加一,得到要插入的最大值
1.插入前先得到表的最大值
2.新的值(要插入的)=步骤1的值+1;
3.插入
引用1楼的
ADOQuery1.Close;
adoQuery1.sql.text := 'select IsNull(Max(jrlNum),0) from manager.charge_log_ecard';
AdoQuery1.open;
vNum := AdoQuery1.fields[0].AsInteger;//取到已有的最大值
inc(vNum);加一,得到要插入的最大值
#3
如果jrlnum是自增长字段,可以不用处理。
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) +')';
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) +')';
ADOQuery1.ExecSQL;
#4
如果是oracle数据库可以用sequence来实现
select seq.nextval from dual呵,楼上几位说的都很详细
select seq.nextval from dual呵,楼上几位说的都很详细
#5
1,如果jrlnum是自增长字段,可以不用处理。
2,如果不是可以在SQL Server中创建一个函数获取jrlnum最大值。
例如创建一个函数GetMax()获取charge_log_ecard表中jrlnum字段最大值。
CREATE FUNCTION [dbo].[GetMax]()
RETURNS int
AS
BEGIN
declare @max int
select @max=max(jrlnum) + 1 from charge_log_ecard
return @max
END
然后
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
GetMax() + ')';
ADOQuery1.ExecSQL;
2,如果不是可以在SQL Server中创建一个函数获取jrlnum最大值。
例如创建一个函数GetMax()获取charge_log_ecard表中jrlnum字段最大值。
CREATE FUNCTION [dbo].[GetMax]()
RETURNS int
AS
BEGIN
declare @max int
select @max=max(jrlnum) + 1 from charge_log_ecard
return @max
END
然后
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'insert into manager.charge_log_ecard(reader_barcode,charge,jrlnum)' +
' values(' + QuotedStr(Trim(Rzedit18.text)) + ',' + Trim(RzEdit19.Text) + ',' +
GetMax() + ')';
ADOQuery1.ExecSQL;
#6
如果没有多人同时操作此表,无所谓
否则
感觉最好还是把字段整成自增的,要不然同时操作就不保险了。。。
否则
感觉最好还是把字段整成自增的,要不然同时操作就不保险了。。。
#7
以上的答案都挺好的。学习了。谢谢。结贴