2011-01-07 76 views
0

嗨,我有stringlist ...在我的字符串列表中if if item_type <>'remark'和gL_dept <>''将检查记录.. 如果gl_dept中的记录具有相同的值400,400,401 .. 400的值出来2次 所以只加400一次才会去下一个记录..但是我的问题是 当我做比较时,如果lstDept.indexOf(sdept)<> -1没有去这个说法,但它会回本声明如果(tblSODitemtype).. 我怎样才能添加值到我的StringList ..做比较后插入数据到字符串列表

lstDept := TStringList.Create; 
    tblSOD.DisableControls; 
    try  
    tblSOD.First; 
    while (not tblSOD.Eof) do begin 
     sDept := tblSODGL_DEPT.AsString; 
     if (tblSODITEM_TYPE.AsString <> 'REMARK') and (tblSODGL_DEPT.AsString <> '') then begin 
     if lstDept.IndexOf(sDept) <> -1 then begin 
      lstDept.add(tblSODGL_DEPT.asstring); 
      tblSOD.Next; 
     end;  
     end; 
    end; 
    finally 
    tblSOD.EnableControls; 
    lstDept.Free; 
    end; 

回答

9

我认为这个问题是tblSOD.Next函数调用

尝试改变这种

while (not tblSOD.Eof) do begin 
    sDept := tblSODGL_DEPT.AsString; 
    if (tblSODITEM_TYPE.AsString <> 'REMARK') and (tblSODGL_DEPT.AsString <> '') then begin 
    if lstDept.IndexOf(sDept) <> -1 then begin 
     lstDept.add(tblSODGL_DEPT.asstring); 
     tblSOD.Next; //Problem 
    end;  
    end; 
end; 

这个

while (not tblSOD.Eof) do begin 
    sDept := tblSODGL_DEPT.AsString; 
    if (tblSODITEM_TYPE.AsString <> 'REMARK') and (sDept <> '') then begin 
    if lstDept.IndexOf(sDept) <> -1 then 
     lstDept.add(sDept);     
    end; 
    tblSOD.Next; 
end; 
+1

另外的位置,有一对夫妇的额外要求,以tblSODGL_DEPT.AsString可能被sDept替换。 – 2011-01-07 04:04:20