Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Programmierhans
Thema: Outlook Addin Formularbereich mit Buttonklick öffnen
Am im Forum: Office-Technologien

Hallo Susie1703

Willkommen hier im Forum.

Bitte lies Dir erst mal das hier durch: [Hinweis] Wie poste ich richtig?

Dann Grundlagen erarbeiten (gutes Buch lesen) und konkrete Fragen stellen... sonst wird das nix.

Gruss
Programmierhans

Thema: Multithreading: Klasse mit Daten synchronisieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ein Lock direkt auf dem Datenobjekt kann allerdings auch zu Deadlocks führen. Dies, da Du so von "aussen" nicht prüfen kannst ob du das Ziel locken kannst. Wenn es schon gelockt ist, dann steht dein Thread einfach.

Ob das bei Dir passieren kann ... ohne zu wissen was und wie Du genau zugreifst kann ich das nicht beurteilen.

Gruss
Programmierhans

Thema: DataGridView aus Thread aktualisieren - sehr langsam
Am im Forum: GUI: Windows-Forms

Zitat von herbivore
richtig ist, dass man auf gebundene Daten nur aus dem GUI-Thread zugreifen darf. Allerdings führt das Ändern der Variable dvDataGrid1 für sich alleine genommen zu keinem threadübergeifenden Zugriff.

Ja da gebe ich Dir recht. Wenn nur die bestehende DataView manipuliert würde, dann würden Events einlaufen welche nicht im UI-Thread wären... und das wäre übel...

Aber trotzdem sehr unübliches Konstrukt.

Thema: DataGridView aus Thread aktualisieren - sehr langsam
Am im Forum: GUI: Windows-Forms

Zitat von tho.tull


DataView dvDataGrid1;  //<--hier ist dvDataGrid1 deklariert

void StartThread()
{
        while (true)
        {
                foreach(DataRowView row in dvDataGrid)
                {
                        dvDataGrid1 = clsCom.dvReadValue(dvDataGrid); // <-- hier wird die Variable dvDataGrid1 aus einen Thread aktualisiert (das ist ganz böse)
                        dataGridView1.Invoke(new EditDataGridCallback(this.EditDataGrid), dvDataGrid1);
                        Thread.Sleep(1000);
                }
        }
}
private void EditDataGrid(DataView dvDataGrid)
{
        dataGridView1.DataSource = dvDataGrid1; // <-- hier wird die Variable dem DataGridView1 zugewiesen (im UI-Thread)
}



Gebundene Objekte sollten NIE aus einem Nicht-UI-Thread verändert werden !

Deklarier die Variable innerhalb des for each...

Das ist dann zwar immer noch langsam... aber Deine Exceptions sollten dann weg sein.

Gruss
Programmierhans

Thema: WebClient funktioniert nicht im Intranet
Am im Forum: Netzwerktechnologien

Als erstes würde ich prüfen, ob das Ziel-File schon existiert... falls es existiert, dann das File löschen... und erst wenn es erfolgreich gelöscht wurde den Download starten...

So hast Du schon mal Fehlerquellen ausgeschlossen.

Gruss
Programmierhans

Thema: DataRow Delete Methode mit Where?
Am im Forum: Datentechnologien

http://msdn.microsoft.com/de-de/library/y06xa2h1(v=vs.80).aspx

Ist schneller (id riecht ja förmlich nach PrimaryKey).

Gruss
Programmierhans

Thema: Rechtschreibung-Tool landet im Hintergrund
Am im Forum: Office-Technologien

Also ein einfaches Form welches Deine Methode aufruft... alles Paletti.

Also muss es an Deinem Form liegen...

Ist Dein Form allenfalls TopMost=true ?

Gruss
Programmierhans

Thema: Mandantenfähigkeit und Zentrale Tabellen
Am im Forum: Rund um die Programmierung

Kauf Dir ein SAP System :-)

Thema: Rechtschreibung-Tool landet im Hintergrund
Am im Forum: Office-Technologien

Schau Dir das mal an... ev. hilfts

Form verliert den Focus und springt in den Hintergrund...

Thema: Primary Keys
Am im Forum: Datentechnologien

Zitat von xxMUROxx
ich erstelle in diesen Fällen immer einen Primary Key auf einer Spalte und dann auf den einen Unique Key über die drei Spalten. Andernfalls müsstest du in Tabellen welche auf diese Tabelle referenzieren, ebenfalls drei Spalten einfügen um den Datensatz identifizieren zu können. Diesen Speicherplatz welcher der Unique Index benötigt wird dadurch kompensiert, dass du dann bei referenzierenden Tabellen anstelle von drei Spalten nur eine Spalte benötigst.

Dies mag in vielen Fällen eine gute Lösung sein. Aber diese Lösung hat auch Nachteile:

- Beim speichern auf der 1-Tabelle müssen zwei Indizes angepasst werden (dauert allenfalls länger).
- wenn Du von der n-Tabelle lesen willst und als Input nur die Felder hast welche auf der 1-Tabelle den Unique Key builden, dann musst Du über die Parent-Table joinen.

Dies sollte beim Design berücksichtigt werden (Anzahl Schreibvorgänge / welche Daten liegen wann und wie vor). usw.



Gruss
Programmierhans

Thema: Mandantenfähigkeit und Zentrale Tabellen
Am im Forum: Rund um die Programmierung

Zitat von herbivore
wobei bei SAP die Spalte Mandant schon einige Besonderheiten hat. Wenn man sie in der where-Bedingung der SQL-Abfrage nicht angibt, werden - wenn ich mich richtig erinnere - trotzdem nur die Sätze des aktuellen Mandanten gelesen bzw. beeinflusst.

Das kann ich bestätigen.

Mandantenübergreifende Selects sind nur mit dem Zusatz Client Specified möglich. Diese gehen dann aber soweit ich weiss am Tabellenpuffer vorbei direkt auf die DB.

Gruss
Programmierhans

Edit: Zitat gekürzt

Thema: ComboBox.SelectedIndex mit DataTable
Am im Forum: GUI: Windows-Forms

Wo hast Du diesen Code drin ?

In einem Constructor eines Forms/UserControls ?

Thema: Makro C# - Mail senden mit Anhang
Am im Forum: Netzwerktechnologien

Ist bei Dir Google defekt ?

http://stackoverflow.com/questions/1195111/c-sharp-mailto-with-attachment

Thema: VS: Beim Drücken von F5: Welches Projekt des Projektmappenexplorers wird damit gestartet?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nur der Vollständigkeit halber... es können auch MEHRERE Projekte gestartet werden ... ist eine reine Einstellungssache.

Thema: [gelöst] SAP User-Exit's werden über RFC nicht aufgerufen.
Am im Forum: Rund um die Programmierung

Schön dass die Tipps geholfen haben...

Der Vollständigkeit halber noch was zum Breakpoint:

1) SE37 in die entsprechende Funktion
2) Breakpoint auf der ersten Zeile setzen (Wichtig: es gibt zwei Arten von Breakpoints... es muss derjenige verwendet werden welcher 2-Stunden gültig ist (in deinem Link sieht man das Icon).
3) Es muss derselbe User verwendet werden welcher beim Aufruf des FuBa verwendet wird.
4) Breakpoints gelten nur für neue Verbindungen (im Zweifelsfall die Anwendung neu starten)

Gruss
Programmierhans

PS: Wir debuggen aus der Schweiz sogar Anwendungen in Australien :-). Bei alten SAP-Versionen kann man das AbapDebug-Flag (der Verbindung) setzen und kann so sogar OHNE externen Breakpoint direkt in SAPGui reindebuggen.

Thema: [gelöst] SAP User-Exit's werden über RFC nicht aufgerufen.
Am im Forum: Rund um die Programmierung

Setz in SAP in SE37 in ALM_MEREP_040_CREATE einen harten Breakpoint ... und schau Dir die Werte an...

Vorallem diese 2 Werte sehen für mich strange aus...

messung.SetValue("READING_DATE", SAPZEIT);
messung.SetValue("READING_TIME", SAPZEIT);


--> Konzentrier Dich zuerst auf die WERTE ... erst wenn Du 100% sicher bist, dass die Werte identisch sind (zwischen RFC-Call und Handeingabe) kannst Du weiter nach der Ursache suchen...

Ich habe zu oft erlebt, dass es am Schluss nur an den Daten liegt.

Gruss
Programmierhans

Thema: [gelöst] SAP User-Exit's werden über RFC nicht aufgerufen.
Am im Forum: Rund um die Programmierung

Mach mal ein

RfcSessionManager.BeginContext(rfcDest) vor den Aufrufen und ein entsprechendes EndContext nach dem letzen Aufruf.

Thema: DLL in andere DLL einbetten
Am im Forum: Rund um die Programmierung

Suchst Du so etwas wie Assembly.GetReferencedAssemblies

Thema: Reflection: mit 3.5 Assembly 4.0 Assembly auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Offtopic: Umgekehrt gehts :-)

Thema: [erledigt] Installation: Fehler bei der Installation eines Diensts: Der Kontoname ist unzulässig ...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Offtopic: Nebenbei: Ueberleg Dir mal, wie lange der Timer lebt wenn Du diesen in der OnStart-Methode statt auf Klassenebene deklarierst....

PS: Dies ist NICHT der Grund wieso sich dein Dienst nicht installieren lässt.

Thema: Einfache Datenbank für parallele Zugriffe
Am im Forum: Datentechnologien

Access im Netz... Shared File-DB is the root of all evil.

Ein kurzer Netzunterbruch beim speichern und alles ist im Eimer....

Thema: [erledigt] Visual Studio Project References/Verweis über mehrere Stufen ?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Suchst Du so was:

Assembly.GetReferencedAssemblies ?

Thema: Verhindern, dass es in einer Tabelle doppelte Einträge gibt
Am im Forum: Datentechnologien

Wobei wenn klar ist, dass mehrere Felder zusammen Unique sind, dann musst Du Dir gut überlegen, ob du diese Zusammen nicht als PrimaryKey einsetzen willst (und auf das ID-Feld verzichten willst).

Nachtrag: Aber das sind eigentlich Datenbank-Grundlagen

Thema: Verhindern, dass es in einer Tabelle doppelte Einträge gibt
Am im Forum: Datentechnologien

PrimaryKey=ID

UniqueKey= A, B ,C, Zeichnungsnummer

Thema: Postgres Typen in normalen System.Type umwandeln
Am im Forum: Datentechnologien

Wieso machst Du das nicht mit GetSchemaTable

(hau mal "GetSchemaTable" auf die Suche)

Thema: WndProc in ClassLib nutzen
Am im Forum: Rund um die Programmierung

Nur so als Tipp: Schau Dir auch mal das IMessageFilter - Interface an... da findest Du ein paar interessante Beiträge.

Thema: Textbox Focus setzen nachdem Form geöffnet wurde
Am im Forum: GUI: Windows-Forms

Nur als Hinweis: Es gibt einen Assistenten um Tabindex einzustellen (kannst Dich einfach durch das Form (durch alle Controls) durchklicken... ) dann passiert das nicht :-)

Thema: DataTable Child-Row null nach Update der Child-Table über TableAdapter
Am im Forum: Datentechnologien

Du verwendest ja das dsSQL. Schau Dir mal die Definition der Beziehungen in diesem DataSet an. Habe zwar schon länger nichts mehr mit DB's gemacht, aber gibt es da nicht bei der Beziehung eine Einstellung ob Aenderungen weitergegeben werden sollen ?

Ohne jetzt deine DB zu kennen, kann es ja sein, dass beim Insert in die DB das Key-Feld (ID) neu vergeben wird... wenn diese Aenderung nicht an die referenzierten Records weitergegeben werden, dann bricht die Verbindung zum Datensatz.

Tipp: Zieh dir einen Datensatz in das Watch-Fenster und vergleiche die Daten Vor und Nach dem Update... so erkennst Du sicher einfach welche Felder sich beim Update (Insert auf die DB) verändern... und ob diese neuen Werte an die anderen Records weitergegeben werden.

Viel Spass
Gruss
Programmierhans

Thema: [Gelöst] SAP RFC Commit nach BAPI aufruf
Am im Forum: Rund um die Programmierung

Zitat von EifelYeti
Genau DAS hab ich gesucht. Vielen Dank!

Kein Problem :-) und unser täglich SAP gib uns heute :-)

Gruss
Programmierhans

PS: SAP.Net.Connector ist ein dehnbarer Begriff ... die neue Version 3.0 wird meist SAPNCO3 genannt um Verwechslungen mit den älteren Versionen zu vermeiden (3.0 ist in keinster Weise kompatibel zu älteren Versionen).

Gute Links:

Uebersicht (Kein Account nötig):
- SAP .NET Connector 3.0Overview

.Net als Server (calls aus SAP)
- Build an RFC Server with NCo 3.0 – A Step-By-Step Guide

Thema: [Gelöst] SAP RFC Commit nach BAPI aufruf
Am im Forum: Rund um die Programmierung

Vergiss SAP.NET Connector gleich wieder... der ist tot (wird nicht weiter entwickelt)... zudem ist das Teil (ohne Modifikation) brandgefährlich auf .Net-Versionen > 1.1 (da die ganze Serialisierung/Deserialisierung auf Reflection (speziell Reihenfolge von Feldern der Strukturen) aufgebaut ist... und Reflection ist ja ab 2.0 aufgrund der eingeführten Generics nicht mehr stabil (die Felder werden nicht bei jedem Call in derselben Reihenfolge geliefert).

SAP.Net Connector kann zudem nicht mit modifizierten Strukturen umgehen (d.h: Wenn irgendwo ein neues Feld dazwischengeklemmt wird bist du tot).

So wie Dein Code aussieht hast Du es mit SAPNCO3 gemacht... das passt schon.

Wenn mehrere Bausteine in Folge aufgerufen werden sollen, dann musst Du dafür sorgen dass die Aufrufe im selben Kontext stattfinden.

RfcSessionManager.BeginContext

Aufruf 1
Aufruf 2

RfcSessionManager.EndContext

Gruss
Programmierhans