"SQL ve MQL5: SQLite Veritabanı ile Çalışmak" makalesi için tartışma - sayfa 2

 

Copying struct - corrected ByteImg.mqh dosyasındaki değişiklikler nedeniyle union kullanmak için

yeni FastFile'ı yayınlandığı yerden indirin https://www.mql5.com/ru/forum/6291#comment_4967832
Dosyalar:
ByteImg.mqh  6 kb
 
 string query="SELECT COUNT(*) FROM '"+table+"' WHERE low<"+lowLevel+" AND high>"+highLevel+" AND date>'"+TimeToString(time)+"'";

if(sql3.Query(tbl,query)!=SQLITE_DONE)

        {

         Print(sql3.ErrorMsg());

         return 0.0;

        }

      sql3.Disconnect();

      CSQLite3Cell cell;

      tbl.Cell(0,0,cell);

      int gg=cell.GetInt64();


gg her zaman 0 çıktısı verir. Ancak sorgu doğrudan veritabanına girilirse, doğru değeri verir.

COUNT yerine bir sütun koyar ve sonra dizi boyutuna ArraySize(tbl.m_data) bakarsanız, her şey iyidir. Yani sayım çalışmıyor. Bilmiyorum, belki de yanlış bir şey yapıyorum.....

 
yılı atlatmak daha iyi.
 
cvera'nın kendisi çalışıyor. Ya sonucu yanlış yerden alıyorum ya da sorgulayıcıyı veritabanına geçiren sınıf doğru çalışmıyor.
 

Şu anda bu hatayı yaşıyorum, biri bana yardımcı olabilir mi?

Dosyalar:
Immagine.jpg  268 kb
 
d.bignotti:

Şu anda bu hatayı yaşıyorum, bana yardımcı olabilecek biri var mı?

Gönderdiğiniz için teşekkürler

arşivde düzeltme

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

"SQL ve MQL5: SQLite Veritabanı ile Çalışma" makalesinin tartışılması

Denis Kanapis, 2017.06.11 15:28

 string query="SELECT COUNT(*) FROM '"+table+"' WHERE low<"+lowLevel+" AND high>"+highLevel+" AND date>'"+TimeToString(time)+"'";

if(sql3.Query(tbl,query)!=SQLITE_DONE)

        {

         Print(sql3.ErrorMsg());

         return 0.0;

        }

      sql3.Disconnect();

      CSQLite3Cell cell;

      tbl.Cell(0,0,cell);

      int gg=cell.GetInt64();


gg her zaman 0 çıktısı verir. Ancak sorguyu doğrudan veritabanına girerseniz, doğru değeri verir.

COUNT yerine bir sütun koyarsanız ve ardından dizi boyutuna bakarsanız ArraySize(tbl.m_data), her şey yolunda. Yani sayım çalışmıyor. Bilmiyorum, belki de yanlış bir şey yapıyorum.....


Aynı şey - COUNT 0 çıktısı veriyor, ancak komut dosyasını SQLiteStuido'dan çalıştırdığınızda - her şey sayılıyor.

Pratik olarak bunun ~10000> vuruş sayısına sahip tablolarda gerçekleştiği bulundu. Dahası, yukarıdaki örnekte olduğu gibi elde edilen tbl tablosu yazdırılırsa (kodda yerleşik bir işlevle) - INTEGER türündeki sütunlar elbette 0 olmamalarına rağmen 0 yazdırılacaktır. Ve aynı çıktıda DOUBLE doğru şekilde çıktı verir.

Ints ile ilgili bir sorun var gibi görünüyor (henüz test edecek zamanım olmadı).

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

"SQL ve MQL5: SQLite Veritabanı ile Çalışma" makalesinin tartışılması

BeforeFlight, 2017.08.31 07:55 AM


Aynı şey - COUNT 0 çıktısı veriyor, ancak SQLiteStuido'dan bir komut dosyası çalıştırırken - her şey sayılıyor.

Pratik olarak bunun ~10000>Stroke sayısına sahip tablolarda gerçekleştiğini buldum. Dahası, yukarıdaki örnekte olduğu gibi elde edilen tbl tablosu yazdırılırsa (kodda yerleşik bir işlevle) - INTEGER türündeki sütunlar elbette 0 olmamalarına rağmen 0 yazdırılacaktır. Ve aynı çıktıda DOUBLE doğru şekilde çıktı verir.

Ints ile ilgili bir sorun var gibi görünüyor (henüz test edecek zamanım olmadı).


Bunu buldum - "Include\MQH\Ctrl\ByteImg.mqh" dosyasında:

yerine:

int ViewInt() { __int d; d.v=0; ViewArray(d.b,0,4); return(d.v); }

görünüşe göre demek istedim:

int ViewInt() { __int d={0}; ViewArray(d.b,0,4); return(d.v); }

Bundan sonra COUNT ve tabloların çıktısı ile her şey doğru. En azından testlerim geçti.

@o_o @Denis Kanapis

 
BeforeFlight:

Buldum-- "Include\MQH\Ctrl\ByteImg.mqh" dosyasında:

yerine:

görünüşe göre demek istemiş:

Bundan sonra, COUNT ve tabloların çıktısı ile her şey doğru. En azından testlerim geçti.

@o_o @Denis Kanapis


Sadece bu hatayı size söylemek istedim, benden önce davrandınız :). INT değerleri için her zaman 0 değeri verildi.

 

SD için bir hata tanımladınız, çünkü __int bir birliktir

union __int { int v; uchar b[4]; };

ve arasındaki fark

__int d; d.v=0;

и

__int d={0};

arasında hiçbir fark olmamalıdır.

Gösterdiğiniz kod parçası COUNT'unuzu nasıl etkilediğini hiç anlamıyor.

Çünkü ViewInt fonksiyonu yazmaz, tam tersi d.v' deki sayıyı okur. Ve d.v.'nin mevcut değeri umurunda değildir.

-----

Kendinizi daha rahat hissetmeniz için ByteImg'ye önerdiğiniz düzenlemeyi ekledim.


Ancak lütfen bu hatayı yerelleştirin ve yeniden yazdırın. Şimdiye kadar bir hata gibi görünüyor, ancak kesinlikle lib'in bir hatası değil.