1

Тема: Зчитування з бази даних в Visual Studio 2010

Добрий вечір. В мене виникла така проблема: потрібно переробити програму із Visual Studio 2006 в Visual Studio 2010. Я запускаю файл просто відкритий у 2010 і заново створений проект в 2010 із набраним кодом. У першому випадку проект компілюється, але некоректно працює. У другому - запускається з такою помилкою:

Прихований текст

[list=*]
[*]c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(44): error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [68]' to 'const wchar_t *'
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(51): error C2664: 'CRecordset::Open' : cannot convert parameter 2 from 'LPCSTR' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(59): error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [9]' to 'LPCWSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(62): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [13]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(64): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [13]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(66): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [12]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(68): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [10]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(70): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [7]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(72): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [6]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(74): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [14]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(76): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [12]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(78): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [14]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(80): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [14]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(82): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [14]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(85): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [4]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(87): error C2664: 'void CRecordset::GetFieldValue(LPCTSTR,CDBVariant &,short)' : cannot convert parameter 1 from 'const char [7]' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(250): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(250): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(260): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(283): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(285): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>  CpteElement.cpp
1>c:\users\yevheni\desktop\periodictable\periodictable\cpteelement.cpp(70): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\yevheni\desktop\periodictable\periodictable\cpteelement.cpp(75): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>  Generating Code...
1>
1>Build FAILED.[/*]
[/list]

Це все у цій частині коду:

void CpteTable::InitElements()
{
    CDatabase  db;
    CString strDSN;
    CString pathdb;
    pathdb=GetCommandLine();
    pathdb=pathdb.Mid(1,pathdb.ReverseFind('\\'));
    strDSN.Format ("ODBC;DBQ=%s;Driver={Microsoft Access Driver (*.mdb)};UID=Admin;PWD=", "db1.mdb");
    if (db.OpenEx (strDSN, CDatabase::noOdbcDialog))
    int iRec = 0;     
    CRecordset rs(&db);
    CString    data;
    int        position=0;

    rs.Open(AFX_DB_USE_DEFAULT_TYPE, (LPCSTR)"SELECT * FROM Elements");

    if(!rs.IsEOF())
    {
        while(!rs.IsEOF())
        {
            if(position > 117)
            {
                MessageBox(NULL, "DB Error", "There are too many records in the database!", MB_ICONSTOP);
                break;
            }
            rs.GetFieldValue("AtomicNumber", data);    
            Elements[position].SetAtomicNumber(data);
            rs.GetFieldValue("AtomicWeight", data);    
            Elements[position].SetAtomicWeight(data);
            rs.GetFieldValue("GroupNumber", data);    
            Elements[position].SetGroupNumber(data);
            rs.GetFieldValue("GroupName", data);    
            Elements[position].SetGroupName(data);
            rs.GetFieldValue("Period", data);    
            Elements[position].SetPeriod(data);
            rs.GetFieldValue("Block", data);    
            Elements[position].SetBlock(data);
            rs.GetFieldValue("CASRegistryID", data);    
            Elements[position].SetCASRegistryID(data);
            rs.GetFieldValue("ElementName", data);    
            Elements[position].SetElementName(data);
            rs.GetFieldValue("ElementSymbol", data);    
            Elements[position].SetElementSymbol(data);
            rs.GetFieldValue("DiscoveryDate", data);    
            Elements[position].SetDiscoveryDate(data);
            rs.GetFieldValue("DiscoveryName", data);    
            Elements[position].SetDiscoveryName(data);

            rs.GetFieldValue("Row", data);    
            Elements[position].SetRow(data);
            rs.GetFieldValue("Column", data);    
            Elements[position].SetColumn(data);

            rs.MoveNext();    
            position++;
        }
    }
    rs.Close();
    db.Close();

    BuildElementRects();
};

2

Re: Зчитування з бази даних в Visual Studio 2010

Тип символів в стандартних функціях в 2006-й студії - char (1 байт), в 2010 - wchar_t (2 байти). Звідси і починаються проблеми. Додайте до всіх рядків з цією помилкою L, на кшталт
strDSN.Format (L"ODBC;DBQ=%s;Driver={Microsoft Access Driver (*.mdb)};UID=Admin;PWD=", L"db1.mdb");

Подякували: Snakeskin1

3 Востаннє редагувалося Snakeskin (23.12.2013 22:54:13)

Re: Зчитування з бази даних в Visual Studio 2010

koala написав:

Тип символів в стандартних функціях в 2006-й студії - char (1 байт), в 2010 - wchar_t (2 байти). Звідси і починаються проблеми. Додайте до всіх рядків з цією помилкою L, на кшталт
strDSN.Format (L"ODBC;DBQ=%s;Driver={Microsoft Access Driver (*.mdb)};UID=Admin;PWD=", L"db1.mdb");

Дякую, це допомогло, але не допомагає для цих помилок:

Прихований текст
[*]c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(59): error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [9]' to 'LPCWSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\yevheni\desktop\periodictable\periodictable\cptetable.cpp(250): error C2664: 'atoi' : cannot convert parameter 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called[/*]

4

Re: Зчитування з бази даних в Visual Studio 2010

А можете показати, як ви 59-й рядок виправили?

5

Re: Зчитування з бази даних в Visual Studio 2010

koala написав:

А можете показати, як ви 59-й рядок виправили?

Я його не виправив - помилка залишилась

6

Re: Зчитування з бази даних в Visual Studio 2010

Подивіться, як той LPCWSTR визначається.

7

Re: Зчитування з бази даних в Visual Studio 2010

koala написав:

Подивіться, як той LPCWSTR визначається.

Щось я зовсім туплю. Помилка з MessageBoxW вирішилась так, як із попередніми вирішеними - просто там два повідомлення, а я потсавив 1 L

MessageBox(NULL, L"DB Error", L"There are too many records in the database!", MB_ICONSTOP);
break;

Але все ж таки не розумію як випрвити помилки з atoi

8

Re: Зчитування з бази даних в Visual Studio 2010

Я знайшов універсальне рішення - не потрібно дописувати ніяких літер L і вирішуються абсолюто всі помики, але при запуску з'являється таке віконце:

Я почитав в інтернеті про цю помилку, але всерівно не розумію як її можна вирішити.

Post's attachments

Error.png 45.9 kb, 96 downloads since 2013-12-23 

9 Востаннє редагувалося Logans (23.12.2013 22:39:25)

Re: Зчитування з бази даних в Visual Studio 2010

Snakeskin написав:

Я знайшов універсальне рішення - не потрібно дописувати ніяких літер L і вирішуються абсолюто всі помики, але при запуску з'являється таке віконце:

Я почитав в інтернеті про цю помилку, але всерівно не розумію як її можна вирішити.

Наскільки я зрозумів при роботі з VS, це вікно з'явлається при синтаксичній помилці в коді, або також, якщо вибрати Debug замість Releas.

Якщо попереднє рішення було вдалим, воно ігнорує помилки і викликає його. .

P.S. Можу помилятись, але спробуйте проглянути результати компіляції, може ви прогледіли і там все-таки помилка.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

10 Востаннє редагувалося Snakeskin (23.12.2013 22:52:35)

Re: Зчитування з бази даних в Visual Studio 2010

Logans написав:
Snakeskin написав:

Я знайшов універсальне рішення - не потрібно дописувати ніяких літер L і вирішуються абсолюто всі помики, але при запуску з'являється таке віконце:

Я почитав в інтернеті про цю помилку, але всерівно не розумію як її можна вирішити.

Наскільки я зрозумів при роботі з VS, це вікно з'явлається при синтаксичній помилці в коді, або також, якщо вибрати Debug замість Releas.

Якщо попереднє рішення було вдалим, воно ігнорує помилки і викликає його. .

P.S. Можу помилятись, але спробуйте проглянути результати компіляції, може ви прогледіли і там все-таки помилка.


Якщо вибрати Releas замість Debug з'явиться просто помилка "Недопустимый фрагмент" і програма не працюватиме. А коли вибрати Debug, то з'являється вікно як на скріні. В списку компіляції ось таке твориться:

Прихований текст
[*]'PeriodicTable.exe': Loaded 'C:\Users\Yevheni\Desktop\PeriodicTable\Debug\PeriodicTable.exe', Symbols loaded.
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\mfc100d.dll', Symbols loaded.
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msimg32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\apphelp.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\AppPatch\AcLayers.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\userenv.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\profapi.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\winspool.drv', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\mpr.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\nvinit.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\detoured.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\Nvd3d9wrap.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\nvdxgiwrap.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\mfc100rus.dll', Binary was not built with debug information.
'PeriodicTable.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\cryptsp.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\rsaenh.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\RpcRtRemote.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\odbcint.dll', Binary was not built with debug information.
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\bcrypt.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\odbcjt32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\comdlg32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msjet40.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\mswstr10.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\odbcji32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msjter40.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\msjint40.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\odbccp32.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file
Warning: ODBC Success With Info, Ошибка SQLSetConnectAttr для драйвера
State:IM006,Native:0,Origin:[Microsoft][Диспетчер драйверов ODBC]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Недопустимый атрибут строки соединения ODBC
State:01S00,Native:8,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

DBMS: ACCESS
Version: 04.00.0000
ODBC Driver Manager Version: 03.80.0000
Дополнительная функция не реализована
State:S1C00,Native:106,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Warning: Driver does not support requested concurrency.
Дополнительная функция не реализована
State:S1C00,Native:106,Origin:[Microsoft][Драйвер ODBC Microsoft Access]

Warning: Driver does not support requested concurrency.
Warning: Setting recordset read only.
'PeriodicTable.exe': Loaded 'C:\Windows\SysWOW64\mswdat10.dll', Cannot find or open the PDB file
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\mswdat10.dll'
The thread 'Win32 Thread' (0x161c) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1cbc) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1da0) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0xfec) has exited with code 0 (0x0).
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\odbcjt32.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\comdlg32.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\odbcji32.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\msjter40.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\msjint40.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\msjet40.dll'
'PeriodicTable.exe': Unloaded 'C:\Windows\SysWOW64\mswstr10.dll'
The thread 'Win32 Thread' (0x1b64) has exited with code 3 (0x3).
The thread 'Win32 Thread' (0x1794) has exited with code 3 (0x3).
The thread 'Win32 Thread' (0x16d4) has exited with code 3 (0x3).
The thread 'Win32 Thread' (0x19fc) has exited with code 3 (0x3).
Detected memory leaks![/*]

11 Востаннє редагувалося Logans (23.12.2013 22:53:01)

Re: Зчитування з бази даних в Visual Studio 2010

Нічого нового я вам не скажу, вибачте, але я ще з таким тісно не зв'язувався. Але попрошу вас, перелік помилок помістити в спойлер.
І на майбутнє, не всім людям які перелистую тему, цікаві питання які тут розглядували, і листаючи, пролистувати величезні фрагменти тексту, дуже незручно, тому старайтесь поміщати їх в спойлер.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

12

Re: Зчитування з бази даних в Visual Studio 2010

Logans написав:

Нічого нового я вам не скажу, вибачте, але я ще з таким тісно не зв'язувався. Але попрошу вас, перелік помилок помістити в спойлер.
І на майбутнє, не всім людям які перелистую тему, цікаві питання які тут розглядували, і листаючи, пролистувати величезні фрагменти тексту, дуже незручно, тому старайтесь поміщати їх в спойлер.

Добре, дякую за пораду.

13

Re: Зчитування з бази даних в Visual Studio 2010

Snakeskin написав:

Але все ж таки не розумію як випрвити помилки з atoi

Snakeskin написав:

Я знайшов універсальне рішення - не потрібно дописувати ніяких літер L і вирішуються абсолюто всі помики, але при запуску з'являється таке віконце:

Я почитав в інтернеті про цю помилку, але всерівно не розумію як її можна вирішити.

Пане, ви, може, трохи іншої думки про форумчан, але насправді ми не телепати, і не можемо по рядках коду, яких не бачимо (які містять atoi) і по "універсальному рішенню" (яке не працює, до речі) без опису, в чому саме воно полягає, щось підказувати. Або ставте конкретні питання, або ваші теми будуть приречені на ігнор.

14

Re: Зчитування з бази даних в Visual Studio 2010

По проблемах з PDB - читайте.

15

Re: Зчитування з бази даних в Visual Studio 2010

Скиньте весь проект в архіві або в спойлері.

Білий Лунь

16

Re: Зчитування з бази даних в Visual Studio 2010

koala написав:
Snakeskin написав:

Але все ж таки не розумію як випрвити помилки з atoi

Snakeskin написав:

Я знайшов універсальне рішення - не потрібно дописувати ніяких літер L і вирішуються абсолюто всі помики, але при запуску з'являється таке віконце:

Я почитав в інтернеті про цю помилку, але всерівно не розумію як її можна вирішити.

Пане, ви, може, трохи іншої думки про форумчан, але насправді ми не телепати, і не можемо по рядках коду, яких не бачимо (які містять atoi) і по "універсальному рішенню" (яке не працює, до речі) без опису, в чому саме воно полягає, щось підказувати. Або ставте конкретні питання, або ваші теми будуть приречені на ігнор.

Вибачте за некоректність. Я доволі таки не часто сиджу на форумах і частіше за все захоплююсь та не договорюю повну інформацію.

17

Re: Зчитування з бази даних в Visual Studio 2010

То ви краще не вибачайтесь, а договорюйте :)

18

Re: Зчитування з бази даних в Visual Studio 2010

Я залив проект на ex.ua. Может подивитись код і про які помилки з atoi я говорив
http://www.ex.ua/336908255817

19

Re: Зчитування з бази даних в Visual Studio 2010

koala написав:

Тип символів в стандартних функціях в 2006-й студії - char (1 байт), в 2010 - wchar_t (2 байти). Звідси і починаються проблеми. Додайте до всіх рядків з цією помилкою L, на кшталт
strDSN.Format (L"ODBC;DBQ=%s;Driver={Microsoft Access Driver (*.mdb)};UID=Admin;PWD=", L"db1.mdb");

Я намагаюсь побудувати проект на своємо комп'ютері, це допомогло усунути всі такі помилки, ось що залишилось:

1>c:\users\yar\desktop\periodictable\periodictable\periodictable\periodictableview.cpp(188): error C2664: 'int atoi(const char *)' : cannot convert argument 1 from 'CString' to 'const char *'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>  CpteTable.cpp

Отакий рядок:

    Table.SetGroupBGColor(atoi(Elements.GetGroupNumber()),cc.GetColor());

Функція GetGroup Number():

CString CpteTable::GetGroupNumber(int n)
{
    return Elements[n].GetGroupNumber();
}

Повертає CString, а потрібно покажчик на символьну константу.
Мені не доводилось іще працювати із цим типом, а по нету одразу так ціла купа інфи.
Порадьте хтось щось або матеріал, де можна прочитати про CString.

Білий Лунь

20 Востаннє редагувалося Ярослав (25.12.2013 21:41:20)

Re: Зчитування з бази даних в Visual Studio 2010

Отакий рядок:

    rs.Open(AFX_DB_USE_DEFAULT_TYPE, (LPCSTR)"SELECT * FROM Elements");

Помилка:

1>c:\users\yar\desktop\periodictable\periodictable\periodictable\cptetable.cpp(51): error C2664: 'BOOL CRecordset::Open(UINT,LPCTSTR,DWORD)' : cannot convert argument 2 from 'LPCSTR' to 'LPCTSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Подібна помилка була і в цьому рядку:

MessageBox(NULL, "DB Error", "There are too many records in the database!", MB_ICONSTOP);

Я просто поставив в першому випадку замість (LPCSTR) (LPCTSTR)
І в другому випадку перед "Db Error" також, але не знаю чи можна так робити.

Намагаюсь скомпілювати, залишилась помилка переведення 'CString' в 'const char *', описана в попередніх повідомленнях. в рядках:

Table.SetGroupBGColor(atoi(Elements.GetGroupNumber()),cc.GetColor());
if((atoi(Elements[x].GetGroupNumber()) == group) || (atoi(Elements[x].GetGroupNumber()) == oldgroup))
if(atoi(Elements[x].GetGroupNumber()) == group)
OldBrush = dc->SelectObject(&GroupBrushes[atoi(Elements[x].GetGroupNumber())]);
if(atoi(Elements[x].GetGroupNumber()) == group)
Row = atoi(data)+4;
Column = atoi(data);
Білий Лунь