Discusión sobre el artículo "Trabajo con el SGBD MySQL desde MQL5 (MQL4)" - página 20

 
Dmitry Melnichenko:

He creado un nuevo usuario, he intentado conectarme con sus datos, ¡no ha servido de nada!

entonces es poco probable que se trate de un problema de MySQL o de organización de la base de datos, es decir, es evidente que hay algún error en el EA/script o en la librería de la interfaz.

¿Me puede dar un ejemplo donde esto se minimiza? Para que yo pueda demostrar un código corto, y averiguar sus problemas aquí en un hilo del foro.

 
Maxim Kuznetsov:

entonces es poco probable que se trate de un problema de MySQL o de organización de la base de datos, es decir, evidentemente algún bug bien en el EA/script o en la librería de la interfaz.

¿Puede dar un ejemplo en el que esto se minimiza? Para que pueda demostrar un código corto, y luego averiguar sus problemas en un hilo del foro aquí

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, "Error al abrir una posición. Error ", 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;
}
 
¿tienes MQL4 o 5?
 
Maxim Kuznetsov:
¿tiene usted MQL4 o 5?
MQL4
 
Dmitry Melnichenko:
MQL4
y el error es sólo al cerrar el cursor, es decir, todos los registros se sacan normalmente, pero al final aparece esta tontería?
 
Maxim Kuznetsov:
¿y el error es sólo al cerrar el cursor, es decir, se sacan todos los registros normalmente, pero al final sale esta tontería?
Sí, escribe que el número de filas seleccionadas (impreso en Imprimir), pero al cerrar el cursor escribe este error.
 
Amy Liu:

Hola Eugeniy,

Lo siento por la respuesta tardía. Esto es lo que he hecho con tu código. Acabo de modificar una función cMySqlGetRowField para utilizar MultiByteToWideChar. El código original está comentado para comparar.

Gracias a todos. He probado vuestro código. No olvidéis incluir widechar head, o no funcionará.

#include <wchar.h>



 

Hola maestro, estoy usando el software mt4, sistema win10 local utilizando ea para conectar mysql se puede utilizar normalmente, pero poner en win2008 servidor no funcionará, se ha solicitado '... \libraries\MQLMySQL.dll' no se carga ... ...' error.

He descargado todas las versiones incluyendo mt4, mt5, 64bit, 32bit, pero sigue sin funcionar. ¿Qué debo hacer?

 

Hola He cargado la dll en la carpeta Libraries pero me da un error " "Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

¿Cómo es posible?

 
GreenKobra:

Hola He cargado la dll en la carpeta Libraries pero me da un error " "Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

¿Cómo es posible?

Tengo el mismo problema que tú.

Usando MT5 con Windows 10 - 64bits.