Zum Inhalt springen

kaldemor

Mitglieder
  • Gesamte Inhalte

    26
  • Benutzer seit

  • Letzter Besuch

  1. 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
  2. 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.
  3. 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
  4. Richtig! Da aber es sich auch um Datenbank- und C++ - Problem handelt muss ich die beiden Foren ansprechen. Mfg, kaldemor
  5. 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
  6. 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
  7. Hat jemand schon den Grid von Roque Wave Software in die MFC Projekte eingebunden? Als ActiveX oder direkt eingebunden? mfg, kaldemor
  8. Wer hat schon so ein Grid unter Visual C++ verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
  9. kaldemor

    TAdvStringGrid?

    Wer hat schon so ein Grid unter VS2005 (MFC oder C#) verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
  10. Hi, unterstützt dieses Stringgrid auch Memofelder mit Rtf-Formatierung? Wenn ja, unter welcher Entwicklungsumgebung und welcher Hersteller? Danke im Voraus, kaldemor
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...