Cela fait deux heures que j'essaie de lire les données de la base de données et je n'y arrive pas.
Voici le code pour les tests.
En bref. Une base de données est créée avec une table (si la base de données existe, la table est supprimée et recréée). Une seule ligne est ajoutée au tableau.
Ensuite, la base de données est fermée et ouverte à nouveau. La sélection simple de cet enregistrement est effectuée, mais la commande renvoie une erreur indiquant que le résultat de la requête est vide.
Vérifié par l'IDE - tout est sélectionné par la même requête. Je n'arrive pas à savoir si c'est un bug ou un correctif ?
intOnInit()
{
//---int db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_CREATE | DATABASE_OPEN_READWRITE);
if (db_handle != INVALID_HANDLE)
{
// Структура таблицыif (DatabaseTableExists(db_handle, "ea_dsc"))
if(!DatabaseExecute(db_handle, "DROP TABLE IF EXISTS ea_dsc"))
Print("Failed to drop table with code ", GetLastError());
string t_create = "CREATE TABLE ea_dsc (dsc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "" ea_symb TEXT NOT NULL, dt_from TEXT NOT NULL, dt_to TEXT, magic_buy INTEGER NOT NULL, "" magic_sell INTEGER NOT NULL, version TEXT NOT NULL, ea_method TEXT NOT NULL)";
if(!DatabaseExecute(db_handle, t_create))
Print("Failed to create table with code ", GetLastError());
string t_add = "INSERT INTO ea_dsc (ea_symb, dt_from, dt_to, magic_buy, magic_sell, version, ea_method)""VALUES ('EURUSD', 'dt_from', NULL, '123', '456', 'version', 'ea_method')";
if(!DatabaseExecute(db_handle, t_add))
Print("Failed to add table data with code ", GetLastError());
DatabaseClose(db_handle);
}
db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_READWRITE);
if (db_handle != INVALID_HANDLE)
{
// Запросstring s_quer = "SELECT dsc_id, ea_symb, dt_from, dt_to, magic_buy,""magic_sell, version, ea_method FROM ea_dsc WHERE ea_symb = ?1";
int c_request = DatabasePrepare(db_handle, s_quer);
if (c_request != INVALID_HANDLE)
{
if (DatabaseBind(c_request, 0, "EURUSD"))
if (DatabaseRead(c_request))
{
Print("Found!");
}
elsePrintFormat("Error=%d", GetLastError());
DatabaseFinalize(c_request);
}
DatabaseClose(db_handle);
}
//---return(INIT_SUCCEEDED);
}
Comment installer des EA à partir du marché ? J'ai plusieurs terminaux. J'appuie sur télécharger dans le marché, le mauvais terminal s'ouvre par défaut. Je l'ai supprimé. Maintenant, rien ne se passe après avoir appuyé sur le bouton "télécharger".
Vladimir Makhnin #: Comment installer des EA à partir du marché ? J'ai plusieurs terminaux. J'ai appuyé sur télécharger dans le marché et par défaut le mauvais terminal a été ouvert. Je l'ai supprimé. Maintenant, rien ne se passe après avoir appuyé sur le bouton "télécharger".
Quel est l'intérêt de faire ça ? Partagez le secret...
C'était dans le fil suivant, vous n'avez pas à aller bien loin :
enum LIST
{
L01=111, // ITEM 1
L02=222, // ITEM 2
L03=333, // ITEM 3
L04=444, // ITEM 4
L05=555, // ITEM 5
L06=666, // ITEM 6
L07=777, // ITEM 7
L08=888, // ITEM 8
};
input LIST LISTING_01=L01;
input LIST LISTING_02=L02;
input LIST LISTING_03=L03;
input LIST LISTING_04=L04;
input LIST LISTING_05=L05;
input LIST LISTING_06=L06;
input LIST LISTING_07=L07;
input LIST LISTING_08=L08;
LArray[0]=LISTING_01;
LArray[1]=LISTING_02;
LArray[2]=LISTING_03;
LArray[3]=LISTING_04;
LArray[4]=LISTING_05;
LArray[5]=LISTING_06;
LArray[6]=LISTING_07;
LArray[7]=LISTING_08;
C'est un plaisir pour les chiens de tout mettre dans un tableau LArray à la main au lieu d'une boucle. Et ce n'est qu'un exemple. En réalité, il pourrait y avoir beaucoup d'énumérations.
Je ne parlerai même pas de l'absence d'énumération et de l'énumération ENUM_TIMEFRAMES. C'est fatiguant.
Sera très utile si vous avez besoin de faire un décalage ou un décalage droite/gauche par un nombre quelconque de constantes. Voilà ce que j'ai obtenu :
x572intraday #: Pourquoi les paramètres d'entrée ne peuvent-ils pas être énumérés dans une boucle ? Pourquoi nous punissez-vous ?
Je me joins à la question.
Toujours à propos des enum : s'il existe une fonction EnumToString, pourquoi pas StringToEnum - une tâche incroyablement complexe ?
La sauvegarde des valeurs d'énumération dans la base de données sous forme de nombres n'est pas une option, car si vous ajoutez une nouvelle valeur à l'énumération au milieu, les données de la base de données se transforment en citrouille et sont illisibles sous forme de nombres, vous ne pouvez pas les voir de vos yeux.
Cela fait deux heures que j'essaie de lire les données de la base de données et je n'y arrive pas.
Voici le code pour les tests.
En bref. Une base de données est créée avec une table (si la base de données existe, la table est supprimée et recréée). Une seule ligne est ajoutée au tableau.
Ensuite, la base de données est fermée et ouverte à nouveau. La sélection simple de cet enregistrement est effectuée, mais la commande renvoie une erreur indiquant que le résultat de la requête est vide.
Vérifié par l'IDE - tout est sélectionné par la même requête. Je n'arrive pas à savoir si c'est un bug ou un correctif ?
Résultat des travaux :
Aussi, le code complet est joint
Pourquoi ne pouvez-vous pas parcourir les paramètres d'entrée en boucle ? Pourquoi nous punissez-vous comme ça ?
Quel est l'intérêt de faire ça ? Partagez le secret...
J'appuie sur télécharger dans le marché, le mauvais terminal s'ouvre par défaut. Je l'ai supprimé. Maintenant, rien ne se passe après avoir appuyé sur le bouton "télécharger".
Comment installer des EA à partir du marché ? J'ai plusieurs terminaux.
J'ai appuyé sur télécharger dans le marché et par défaut le mauvais terminal a été ouvert. Je l'ai supprimé. Maintenant, rien ne se passe après avoir appuyé sur le bouton "télécharger".
Avec quel navigateur téléchargez-vous ?
Quel est l'intérêt de faire ça ? Partagez le secret...
C'était dans le fil suivant, vous n'avez pas à aller bien loin :
C'est un plaisir pour les chiens de tout mettre dans un tableau LArray à la main au lieu d'une boucle. Et ce n'est qu'un exemple. En réalité, il pourrait y avoir beaucoup d'énumérations.
Je ne parlerai même pas de l'absence d'énumération et de l'énumération ENUM_TIMEFRAMES. C'est fatiguant.Je ne mentionnerai même pas l'absence d'énumération et de l'énumération ENUM_TIMEFRAMES.
Une fois, j'ai essayé de faire un dépassement similaire par intérêt :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Communiquez avec les développeurs via le Service Desk !
Mihail Matkovskij, 2019.10.05 22:07
Sera très utile si vous avez besoin de faire un décalage ou un décalage droite/gauche par un nombre quelconque de constantes. Voilà ce que j'ai obtenu :
Décalage de 1 :
Décalage de 2 :
Toutefois, cette méthode perd encore en rapidité par rapport à la méthode de commutation.
Pourquoi les paramètres d'entrée ne peuvent-ils pas être énumérés dans une boucle ? Pourquoi nous punissez-vous ?
Je me joins à la question.
Toujours à propos des enum : s'il existe une fonction EnumToString, pourquoi pas StringToEnum - une tâche incroyablement complexe ?
La sauvegarde des valeurs d'énumération dans la base de données sous forme de nombres n'est pas une option, car si vous ajoutez une nouvelle valeur à l'énumération au milieu, les données de la base de données se transforment en citrouille et sont illisibles sous forme de nombres, vous ne pouvez pas les voir de vos yeux.
Existe-t-il un moyen de transmettre explicitement une valeur NULL au paramètre de requête de la base de données ?
C'est le genre de construction qui provoque une erreur de compilation:
res = DatabaseBind(request, column, NULL);DatabaseBind(request, column, "");