Hej jeg har et program der skriver i en Access database. Database filen er placeret på en maskine på et netværk. Jeg skriver i filen med nedenstående kode. Men hvordan kan jeg søge i filen. Skal jeg bruge SELECT. Hvis ja hvordan arbejder jeg så viedere med resultatet. ?
bool CTpYieldConnect::NewPos(const CString &operatorId,const CString &orderNumber,const CString &orderSize,const CString &partNumber, const CString &serialNumber,const CString status,const CString &voltage,const CString ¤t,const CString &StationId) { bool bRet = false; if(m_bLoaded) { // Need to actually verify that the file exists (if it was the first one, it may not as it's incomplete) LogRecordSet logDataRecordSet(&m_dbYield); try { logDataRecordSet.Open(NULL);
http://www.kbcafe.com/articles/HowTo.ADO.CPlusPlus.pdf <- Er et rigtig godt link til en simple tutorial omkring database adgang i c++, jeg bruger selv en modificeret udgave af hans kode og det tager omkring 30 minutter at læse om omstrukture koden.
Fint nok men det er et eks. på skrivning i en ADO database. Min skrive del virker fint. Det er når jeg skal til at bruge de data der ligger i databasen det går galt. Hvordan henter jeg noget tilbage i mit program. Jeg vil f.eks gerne søge på om et bestem serie nummer har passeret test før.
while (!recordset->EndOfFile) { // temp variabler CString name; int db_port; int db_timeout;
_variant_t var; var = recordset->Fields->GetItem(L"Name")->GetValue(); name = var; var = recordset->Fields->GetItem(L"TimeInMS")->GetValue(); db_timeout = var; var = recordset->Fields->GetItem(L"Port")->GetValue(); db_port = var; recordset->MoveNext(); } recordset->Close(); END CODE SNIPPET: Denne stump kode hentes alt data fra en tabel som hedder defaultPorts(Dette defineres i CString SQL'en) og derefter køres alle igennem, hvor alle værdier udtrækkes.
Vil der så ikke blive kommunikeret over netværket for hver record når min database fil er placeret på en anden PC. Vil det ikke tage lang tid at søge databasen igennem ?
Dette eksempel henter hele recordset ned på den lokale maskine, og gennemsøger det her. - Jeg antager at databasen ligger på en anden maskine, som deler den fil via et share?
Her er selve koden. Jeg har lavet en database på placering: c:\temp.mdb, som indeholder en tabel som hedder test. Tabellen indeholder et felt som er af typen tekst og felt navnet er "Tester".
Jeg har haft det placeret i mappen c:\udvikling\adoselect\ og du skal ligge mærke til at jeg laver en direkte reference til c:\udvikling\mdac katalog i min #import "..\mdac26\msado15.dll" no_namespace rename("EOF", "EndOfFile") linie. Der skal du have en mdac liggende(denne kan hentes fra microsoft.com og så skal du ændre din import sti, sådan at dette passer.
Koden er blevet kompileret og testet på en windows 2000 maskine under visual studio .NET 2003 professionel.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.