Skip to main content

SQL ile recid

print '** BEGIN **' declare @TABID int, @nextval bigint, @lastUsed bigint, @sql NVARCHAR(4000),

@msgName varchar(250), @tablename varchar(250)

DECLARE loopTrough CURSOR FOR

select TABID, NEXTVAL from systemsequences where systemsequences.Name =

'SEQNO' and

systemsequences.DATAAREAID = 'dat' and

systemsequences.TABID > 0


open loopTrough


FETCH next FROM loopTrough INTO @TABID, @nextval

WHILE @@FETCH_STATUS = 0

BEGIN



set @tablename = isnull((select [SQLNAME] from SQLDICTIONARY where

SQLDICTIONARY.FIELDID = 0 and SQLDICTIONARY.TableId = @TABID), '')


if @tablename <> ''

set @msgName = @tablename + '(No. ' + convert(varchar(20), @TABID) + ')'

else

set @msgName = '(No. ' + convert(varchar(20), @TABID) + ')'



print 'Analyze ' + @msgName + ' ...'


IF @tablename <> '' and

EXISTS (SELECT 1

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE='BASE TABLE'

AND TABLE_NAME=@tablename)

begin


set @sql = N'SELECT @ret = MAX(RECID) FROM ' + @tablename

EXEC sp_executesql @sql, N'@ret bigint OUTPUT', @lastUsed OUTPUT


if (@nextVal < @lastUsed)

begin

print '> have to be corrected (next RecId: ' + convert(varchar(250),

@nextVal) + ' < max RecID: ' + convert(varchar(250), @lastUsed) + ')'

update systemsequences set nextval = (@lastUsed + 1) where

systemsequences.Name = 'SEQNO' and

systemsequences.TABID = @TABID and

systemsequences.DATAAREAID = 'dat'

print '> corrected; next RecId: ' + convert(varchar(250), @lastUsed + 1)

end

end

else

begin

print @msgName + ' not in SQLDictionary or Table not in DataBase'

end



FETCH next FROM loopTrough INTO @TABID, @nextval

END

close loopTrough

DEALLOCATE loopTrough

print '** Finish **'

Popular posts from this blog

Passing values between form and class

Class name is EmplDuplication and Form is EmplTable . void clicked() {    MenuFunction mf;    args args = new Args();    ;     args.record(EmplTable);     mf = new menufunction(identifierstr(EmplDuplication), MenuItemType::Action); mf.run(args); } Meanwhile, in the main() method of the EmplDuplication class, we need to put this Axapta x++ code to get the datasource: static void main(Args args) {     EmplDuplication EmplDuplication; EmplTable localEmplTable; ;     if(args.record().TableId == tablenum(EmplTable)) localEmplTable = args.record();     ... }

What does this mean: "The form datasource query object does not support changing its AllowCrossCompany property after the form has executed the query."?

I have made a form with datasources vendtable and vendtrans. Inside vendtable_ds.executequery() looks like this: QueryBuildDataSource queryBuildDatasource ,queryBDS_VendTrans_Invoice; ; queryBuildDatasource = this.query().dataSourceTable(tablenum(vendtable)); queryBDS_VendTrans_Invoice = this.query().dataSourceTable(tablenum(vendtrans)); if (curext() == "MASTERCOMP") { this.query().allowCrossCompany(true); } else { this.query().allowCrossCompany(false); } //FilterVendorName = stringedit control on form if (FilterVendorName.text()) { queryBuildDatasource.addRange(fieldNum(VendTable,Name)).value(strfmt("*%1*", FilterVendorName.text())); } else { queryBuildDatasource.clearRange(fieldNum(VendTable,Name)); } //FilterInvoiceNumber = stringedit control on form if (FilterInvoiceNumber.valueStr() == "") { queryBDS_VendTrans_Invoice.enabled(false); } else { queryBDS_VendTrans_Invoice.enabled(true); queryBDS_VendTrans_In...