記事"MQL5 (MQL4)から MySQL データベースにアクセスする方法"についてのディスカッション - ページ 20

 
Dmitry Melnichenko:

新しいユーザーを作成し、そのユーザーの詳細で接続してみましたが、うまくいきませんでした!

つまり、EA/スクリプトかインターフェイスライブラリに何らかのバグがあることは明らかです。

短いコードをデモして、フォーラムのスレッドでその問題を見つけることができます。

 
Maxim Kuznetsov:

つまり、明らかにEA/スクリプトかインターフェース・ライブラリのバグである。

この問題が最小化されるような例を挙げてもらえますか? そうすれば、短いコードをデモして、ここのフォーラムのスレッドでその問題を見つけることができます。

if(connect >= 0)
   {
      string sql = SelectNewOrdersSQL();
      
      int Cursor1 = MySqlCursorOpen(connect, sql);
      
      if(Cursor1 >= 0)
      {
         int Rows = MySqlCursorRows(Cursor1);
         
         for(int i = 0; i < Rows; i++)
         {
            ResetLastError();
            
            if(MySqlCursorFetchRow(Cursor1))
            {
               int ticket = MySqlGetFieldAsInt(Cursor1, 0);
               string s = MySqlGetFieldAsString(Cursor1, 1);
               int order_type = MySqlGetFieldAsInt(Cursor1, 2);
               double lot = MySqlGetFieldAsDouble(Cursor1, 3);
               double open_price = MySqlGetFieldAsDouble(Cursor1, 4);
               
               string symbol = GetSymbol(s);
               
               Print(ticket);
               
               int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
               int open_ticket = -1;
               if((open_ticket = OrderSend(symbol, order_type, NormalizeDouble(lot, 2), NormalizeDouble(open_price, digits), 150, 0, 0, (string)ticket)) <= 0)
               {
                  Print(symbol, ": ポジションのオープンに失敗しました。エラー ", GetLastError());
               }
               else
               {
                  MySqlExecute(connect, SqlModifyClient(ticket, open_ticket));
               }
            }
         }
         
         MySqlCursorClose(Cursor1);
      }
   }
string SelectNewOrdersSQL()
{
   string res = "SELECT Ticket, Symbol, OrderType, Lot, OpenPrice, StopLoss, TakeProfit ";
   res += "FROM orders (WHERE Client2 = 0 AND HistoryMaster = 0 AND Account = " + (string)MasterAccount;
   res += " AND Magic = " + (string)MasterMagic + ")";
   
   return res;
}
 
MQL4か5をお持ちですか?
 
Maxim Kuznetsov:
MQL4か5をお持ちですか?
MQL4
 
Dmitry Melnichenko:
MQL4
エラーはカーソルを閉じるときだけです。つまり、すべてのレコードは正常に取り出されるのですが、最後にこのような無意味なものが出てくるのでしょうか?
 
Maxim Kuznetsov:
つまり、全てのレコードは正常に取り出され、最後にこの無意味なエラーがポップアップするのでしょうか?
はい、選択された行の数は表示されます(Printで表示されます)が、カーソルを閉じるとこのエラーが表示されます。
 
Amy Liu:

こんにちは、エウゲニー、

返事が遅れて申し訳ない。私があなたのコードで行ったことは以下のとおりです。MultiByteToWideChar を 使用するように cMySqlGetRowField 関数を 修正しただけです。元のコードは比較のためにコメントされています。

ありがとうございます。私はあなたのコードを試してみました。

#include <wchar.h>



 

こんにちは、先生、私はmt4ソフトウェアを使用しています、ローカルwin10システムはeaを使用してmysqlを接続するために正常に使用することができますが、win2008サーバーに入れると動作しません、プロンプトが表示されている'...'\librariesMQLMySQL.dll'がロードされていません。...'エラーが表示されます。

私はmt4、mt5、64ビット、32ビットを含むすべてのバージョンをダウンロードしましたが、それはまだ動作しません。どうしたらいいでしょうか?

 

Librariesフォルダにdllをロードしたのですが、"Cnnot call 'cMySqlVersion', '...\LibrariesMQLMySQL.dll' is not loaded "というエラーが表示されます。

それはどのように可能ですか?

 
GreenKobra:

こんにちは、Librariesフォルダにdllをロードしましたが、エラー" "Cnnot call 'cMySqlVersion', '...\LibrariesMQLMySQL.dll' is not loaded "を報告します。

それは可能ですか?

私も同じ問題を抱えています。

Windows 10 - 64ビットでMT5を使用しています。