1

アプリ エンジンを使用して、テキスト ファイルの値をレコードに挿入しようとしています。
これはファイル レイアウトを使用して実行できることはわかっていますが、私の要件では、ファイル レイアウトを使用しないことを提案していますが、アプリ エンジンのユーザー コードを使用してレコードに挿入する必要があります。

appengine で次の PeopleCode を作成しています (この例では、レコードにフィールド値を 1 つだけ追加しようとしています)。

Local File &MYFILE; 
Local Record &REC_ERN; 


&MYFILE = GetFile("c:\sample.csv", "R", %FilePath_Absolute); 

If &MYFILE.IsOpen Then 

While &MYFILE.ReadLine(&STRING); 






MessageBox(0, "", 0, 0, &STRING); 
&source_type_id = Substring(&STRING, 1, 3); 
&Stmt= "INSERT INTO KGS_TEST (ID) VALUES ( &source_type_id)"; 

SQLExec(&Stmt); 
REM MessageBox(0, "", 0, 0, &source_type_id); 


End-While; 
End-If; 

&MYFILE.Close(); 

私が直面している問題は &source_type_id = Substring(&STRING, 1, 3); です。変数 &source_type_id には値がありますが、フィールド (ID、NAME、AGE、部門) を持つ作成したレコードにこれを挿入する必要があります。

4

1 に答える 1

1

あなたが抱えている問題は、変数 &source_type_id が文字列内にあるため、必要に応じて変数の値ではなく文字列の一部として文字通り解釈されることです。

必要なことは、値の文字列にバインド変数を配置し、その値をパラメーターとして SqlExec に渡すことです。

Local File &MYFILE; 

&MYFILE = GetFile("c:\sample.csv", "R", %FilePath_Absolute); 

If &MYFILE.IsOpen Then 
    While &MYFILE.ReadLine(&STRING); 

        MessageBox(0, "", 0, 0, &STRING); 
        &source_type_id = Substring(&STRING, 1, 3); 
        &Stmt= "INSERT INTO KGS_TEST (ID) VALUES ( :1)"; 

        SQLExec(&Stmt,&source_type_id); 
        REM MessageBox(0, "", 0, 0, &source_type_id); 

    End-While; 
End-If; 

&MYFILE.Close(); 
于 2014-10-27T18:50:44.227 に答える