c#
  • database
  • ms-access
  • 2012-01-19 8 views -1 likes 
    -1

    SQLステートメントを更新して(レコードが既に存在する場合)、またはOleDBommandを介してアクセスデータベースにデータレコードを挿入できるようにしようとしています。アクセスデータベースの1つのステートメントに挿入または更新

    SQL文:

    string sql = "IF EXISTS (SELECT * FROM tblMitarbeiter_Arbeitsform WHERE (fkLogin = '" + _Login.ToUpper() + "') AND (fkIdArbeitsform = " + dr.fkIdArbeitsform + "))"; 
         sql += " UPDATE tblMitarbeiter_Arbeitsform SET (Prozent = " + dr.Prozent + ")"; 
         sql += " WHERE (fkLogin = '" + _Login.ToUpper() + "') AND (fkIdArbeitsform = " + dr.fkIdArbeitsform + ")"; 
         sql += " ELSE INSERT INTO tblMitarbeiter_Arbeitsform (fkLogin, fkIdArbeitsform, Prozent) VALUES ('" + _Login.ToUpper() + "', " + dr.fkIdArbeitsform + ", " + dr.Prozent + ")"; 
    
    
    oCmd = new OleDbCommand(sql, getOekobonusConnection()); 
    oCmd.ExecuteScalar(); 
    //oCmd.ExecuteNonQuery(); 
    

    は、ExecuteScalarとのExecuteNonQuery両方が機能していません。私は間違って何をしていますか?

    +3

    「動作していません」 - 具体的には? –

    +1

    ExecuteNonQueryを使用して実行すると、どのようなエラーメッセージが表示されますか?ミッチは言ったように、あなたは再生するためにもっと多くの情報を提供すべきです。 – AnarchistGeek

    +2

    生成されたSQLをAccessで直接実行すると機能しますか? – stuartd

    答えて

    4

    IFを実行することができないように、Access SQLにフロー構造のコントロールはありません。ロジックを分割してコード内でテストを行い、それに応じて更新または挿入を発行する必要があります。

    +0

    +1あなたが正しいと思います。 – Fionnuala

    関連する問題