
kaldemor
Mitglieder-
Gesamte Inhalte
26 -
Benutzer seit
-
Letzter Besuch
-
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Danke für die Hinweise! 1. Frage: Ja, es können mehrere Benutzer das Programm nutzen. (Server, Terminalverbindung) 2. Hinweis: New, Delete: Hab alles überprüft, delete wird immer dann nicht verwedet wenn try/catch aufgerufen wurde + Programmabsturz. In diesem Fall wird der Speicher nicht freigegeben. 3. Hinweis: Können Speicherlecks ExecuteSQL() in die bringen? Mfg, tocha -
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Diese Fehler sind vereinzelt aufgetreten: 2007.07.18 und 2008.03.31 Das Microsoft Jet-Datenbankmodul hat den Vorgang angehalten, da Sie und ein weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu verändern. 2007.11.07 Nicht genügend Arbeitsspeicher. 2008.02.18 Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen. -
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Update gibt TRUE zurück. Ob es eine Fehlermeldung gibt, dass weiß ich nicht! Das Problem tritt sehr selten auf um es nachvollziehen zu können. Es sind Datensätze vorhanden. Obwohl habe ich bedenken, dass Daten erst nach 5 s. aktualisiert werden (PageTimeout = 5000) ODBC: Access 2000 Visual C++, MFC, Version 6.0 liegt das Problem ev. beim Open() mit snapshot? if( dbDatabase.IsOpen() == 0 ) return FALSE; rs = new CRecSet(&dbDatabase); if( !rs->Open(CRecordset::snapshot, "TABELLE", CRecordset::none) ) { dbDatabase.Close(); AfxMessageBox("Problem beim Öffnen TabelleSet"); return FALSE; } Mfg, kaldemor -
Richtig! Da aber es sich auch um Datenbank- und C++ - Problem handelt muss ich die beiden Foren ansprechen. Mfg, kaldemor
-
Hi, beim ausführen von ExecuteSQL() wird der Datensatz nicht aktualisiert. Dieses Problem taucht nur selten auf und deswegen kann ich es nicht nachvollziehen voran es liegen kann? ODBC: Access2000 Entwicklungsumgebung: MS C++, MFC z. B. Dieser Code wird im Programm immer aufgerufen wenn ein Vorgang abgeschlossen ist CString strSql; long lVorlaufigeNr, lNeueNr; lVorlaufigeNr = 10001775; lNeueNr = 12331; try { //UINT III_ID, LPCTSTR III_TEXTID, LONG lWert rs->m_strFilter.Format("L_ID = %d AND STR_ID = '%s'", III_ID, III_TEXTID); rs->Requery(); if(rs->GetRecordCount() > 0 ) { rs->Edit(); rs->m_L_ID = III_ID; rs->m_STR_ID = III_TEXTID; rs->m_L_FORMAT = 0; rs->m_STR_RET = ""; rs->m_L_RET = lWert; rs->Update(); } strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr); dbDatabase.ExecuteSQL(strSql); // Datensatz wird in seltenen Fällen nicht aktualisiert } catch(CDBException *e) { AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION); e->Delete(); return FALSE; } Hat jemand eine Idee? Mfg, kaldemor
-
Hi, beim ausführen von ExecuteSQL() wird der Datensatz nicht aktualisiert. Dieses Problem taucht nur selten auf und deswegen kann ich es nicht nachvollziehen voran es liegen kann? z. B. Dieser Code wird im Programm immer aufgerufen wenn ein Vorgang abgeschlossen ist CString strSql; long lVorlaufigeNr, lNeueNr; lVorlaufigeNr = 10001775; lNeueNr = 12331; try { //UINT III_ID, LPCTSTR III_TEXTID, LONG lWert rs->m_strFilter.Format("L_ID = %d AND STR_ID = '%s'", III_ID, III_TEXTID); rs->Requery(); if(rs->GetRecordCount() > 0 ) { rs->Edit(); rs->m_L_ID = III_ID; rs->m_STR_ID = III_TEXTID; rs->m_L_FORMAT = 0; rs->m_STR_RET = ""; rs->m_L_RET = lWert; rs->Update(); } strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr); dbDatabase.ExecuteSQL(strSql); // Datensatz wird in seltenen Fällen nicht aktualisiert } catch(CDBException *e) { AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION); e->Delete(); return FALSE; } Hat jemand eine Idee? Mfg, kaldemor
-
Hat jemand schon den Grid von Roque Wave Software in die MFC Projekte eingebunden? Als ActiveX oder direkt eingebunden? mfg, kaldemor
-
Wer hat schon so ein Grid unter Visual C++ verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
-
Wer hat schon so ein Grid unter VS2005 (MFC oder C#) verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
-
Hi, unterstützt dieses Stringgrid auch Memofelder mit Rtf-Formatierung? Wenn ja, unter welcher Entwicklungsumgebung und welcher Hersteller? Danke im Voraus, kaldemor
-
Hallo, wie kann man Höhe und Breite von einem Richedittext ermitteln? Hab mit dem Beispiel aus MSDN versucht -> Programmabsturz. // The pointer to my rich edit control. CRichEditCtrl* pmyRichEditCtrl; // A pointer to a printer DC. CDC* pMyPrinterDC; FORMATRANGE fr; // Get the page width and height from the printer. long lPageWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH), 1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX)); long lPageHeight = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALHEIGHT), 1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSY)); CRect rcPage(0, 0, lPageWidth, lPageHeight); // Format the text and render it to the printer. fr.hdc = pMyPrinterDC->m_hDC; fr.hdcTarget = pMyPrinterDC->m_hDC; fr.rc = rcPage; fr.rcPage = rcPage; fr.chrg.cpMin = 0; fr.chrg.cpMax = -1; pmyRichEditCtrl->FormatRange(&fr, TRUE); // Update the display with the new formatting. RECT rcClient; pmyRichEditCtrl->GetClientRect(&rcClient); pmyRichEditCtrl->DisplayBand(&rcClient); Hat jemand eine andere Idee? Mfg, kaldemor
-
z.B. erstelle vorher zwei Klassen von Deinen Dialogmasken dlgFirstPropPage dlgSecondPropPage (abgeleitet von CPropertyPage) void CWaWiApp::OnAufrufAusdemMenue () { CPropertySheet dlgSheet("MyTest"); dlgSheet.m_psh.dwFlags |= PSH_NOAPPLYNOW; dlgSheet.AddPage(&dlgFirstPropPage); dlgSheet.AddPage(&dlgSecondPropPage); dlgSheet.DoModal(); } Mfg, kaldemor
-
CGridCtrlDemo und Richeditgrid
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Zitat: GetTextExtent überschreiben Ist es der richtige Ansatz mit m_pRichEditTemp->FormatRange(&fr, TRUE); m_pRichEditTemp->GetClientRect (&Rect); oder bin ich auf dem Holzweg? Zitat: CRichEditCtrl::StreamIn Daran hab ich es auch gedacht. Nun die Lösung (etwas umständlich): CGridCellRich* pCell=(CGridCellRich*) m_Grid.GetCell(1, 1); if (pCell) pCell->SetRichText(Text); m_Grid.SetItemText(1,1, Text); void CGridCellRich::SetRichText(CString str) { EDITSTREAM es; es.dwCookie = (DWORD)&str; es.pfnCallback = MyStreamInCallback; m_pRichEditTemp->StreamIn(SF_RTF, es); } // Funktion MyStreamInCallback hab ich von CodeProject. Free source code and programming help DWORD CALLBACK CGridCellRich::MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CString* str = ( ( CString* ) dwCookie ); #ifdef _UNICODE // Unicode is only supported for SF_TEXT, so we need // to convert LPCTSTR ptr = str->GetBuffer( (*str).GetLength() ); int length = ::WideCharToMultiByte( CP_UTF8, 0, ptr, -1, NULL, 0, NULL, NULL ); int max = min( cb, length ); if( length ) { char* buff = new char[ length ]; ::WideCharToMultiByte( CP_UTF8, 0, ptr, -1, buff, length + 1, NULL, NULL ); strncpy( (LPSTR) pbBuff, buff, max ); delete[] buff; } str->ReleaseBuffer(); #else int max = min( cb, (*str).GetLength() ); strncpy( ( LPSTR ) pbBuff, (*str) , max ); #endif (*str) = (*str).Right( (*str).GetLength() - max ); *pcb = max; return 0; } Mfg, Kaldemor -
CGridCtrlDemo und Richeditgrid
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
FormatRange wird bereits in CGridCellRich::Draw() eingesetzt. Oder soll ich die GetText() überschreiben? Jetzt habe ich ein größeres Problem: Text eine Zelle mit m_Grid.SetItemText(1,1, _T(„TEXT“)) einfügen/überschreiben. Jetzt möchte ich den RichTextfeld aus meiner Datenbank auslesen und diesen in eine bestimmte Zelle einfügen. Wenn man jetzt den Richtext nicht in normales Text umwandeln darf, da ja die Formatierung verloren geht, wie soll man da sonst vorgehen? Mfg, kaldemor -
Frage zu meinem aller ersten Problem: Wenn ich die Schriftgröße vom Text ändere und AutoSizeRow() aufrufe, wird die Zellenhöhe fasch ermittelt. Ist auch logisch, da die Funktion GetText() einen Richtext zurück gibt. Hab versucht den Richtext in nur Text (SF_TEXT) umzuwandeln, hab aber wegen pCell->EndEdit() keinen Bezug auf Richeditfeld mehr. Was muß ich vorher beachten? Gibt es andere Möglichkeit den Richtext umzuwandeln? CSize CGridCellBase::GetCellExtent(CDC* pDC). { CSize size; CString str, Text; Text = GetText(); if (Text.Left (6)=="{\\rtf1") { CInPlaceRichEdit* prich = NULL; prich->GetRichText(); size = GetTextExtent(Text, pDC); } else size = GetTextExtent(GetText(), pDC); } void CGridCellRich::GetRichText(CString& str) { EDITSTREAM es; COOKIE cookie; es.dwCookie = (DWORD)&cookie; es.pfnCallback = GetEditStreamCallback; m_pRichEditTemp->StreamOut(SF_TEXT, es); str = cookie.strText; } // Beispiel um Schriftgröße zu ändern CGridCellRich* pCell=(CGridCellRich*) m_Grid.GetCell (m_Grid.GetFocusCell().row, m_Grid.GetFocusCell().col); CString strFontSize; int iIndex = 0; iIndex = m_CBGroesse.GetCurSel(); if( iIndex != CB_ERR ) m_CBGroesse.GetLBText(iIndex, strFontSize); if (pCell) { pCell->SetFontSize( atoi(strFontSize) ); pCell->EndEdit(); m_Grid.AutoSizeRow(row); m_Grid.Invalidate(); } Mfg, kaldemor