新しいデータベース (mssql) 構造で動作するように、Delphi ソフトウェアにパッチを適用する任務を負っています。以前のデータベース (mssql) では、読み取られる列はすべて同じテーブルにありました。新しいバージョンでは、file_name と class_name は数量値として別のテーブルにあります。これら 2 つのデータベース テーブルの Join を作成することで、これを修正できると思います。問題は、私が Delphi に慣れていないことです。
現在のコードは以下です。これら 2 つのデータベースを 1 つに結合するにはどうすればよいですか?
dataTable=style001 dataTable1=style
ありがとう!!!
dataTable.Active := True;
datatable.Open;
dataTable1.Active := True;
datatable1.Open;
while not datatable1.Eof do
begin
Application.ProcessMessages;
file_name := trim(datatable1.FieldByName('code').asString) + '.jpg';
class_name := trim(datatable1.FieldByName('category').asString);
if not FileExists(picfolder + file_name) then
begin
dataTable1.next;
continue;
end;
instock := datatable.FieldByName('onhand').asString;
TryStrToInt(instock, instock_num);
quantity := datatable.FieldByName('onorder').asString;
TryStrToInt(quantity, num);
num := instock_num - num;
is_active := ( num > 10 );
for i := 0 to file_count-1 do
begin
if is_active = active_class[file_class[i]] then
if SameText(files[i],file_name) then
begin // use TStringList instead
if SameText(class_name, classes[file_class[i]]) then // same class
begin
file_ok[i] := true;
class_ok[file_class[i]] := true;
end;
break;
end;
end;
if class_name <> '' then class_name := class_name + '\';
dest := picfolder + active_path[is_active] + class_name;
deldest := picfolder + active_path[not is_active] + class_name;
{$I-}
if FileExists(deldest + file_name) then
DeleteFile(PChar(deldest + file_name ));
if not FileExists(dest + file_name) then
begin
ForceDirectories(dest);
CopyFile(PChar(picfolder + file_name ), PChar(dest + file_name ), true );
end;
dataTable1.next;
end;
for i := 0 to file_count-1 do
if not file_ok[i] then
begin // delete wrong file if empty
// ShowMessage('problem: ' + picfolder + active_path[active_class[file_class[i]]] + classes[file_class[i]] + '\' + files[i]);
DeleteFile(picfolder + active_path[active_class[file_class[i]]] + classes[file_class[i]] + '\' + files[i]);
end;
for i := 0 to class_count-1 do
if not class_ok[i] then
begin // delete old class if empty
// ShowMessage('problem: ' + picfolder + active_path[active_class[i]] + classes[i] + '\' );
RemoveDir(picfolder + active_path[active_class[i]] + classes[i] + '\' );
end;
beep;
dataTable.Active := False;
dataTable1.Active := False;