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 thomas.at
Thema: DataTable in typisiertes DataSet und umgekehrt
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <egal>

Hallo Leute

ich bekomme aus einer DLL (auf die ich keinen Einfluss habe) beim Laden aus den DB's eine DataTable zurück. Auch beim Speichern erwartet die DLL eine DataTable. Nun möchte ich aber mit typisierten DataSets weiterarbeiten. Derzeit löse ich den Umstieg wie folgt:


// laden
DS_xxx.yyyDataTable dtzzz = new DS_xxx.yyyDataTable();
dtzzz.Merge(DB.Get_Data());
dtzzz.AcceptChanges();

// speichern
DataTable dt = new DataTable(dtzzz.TableName);
dt.Merge(dtzzz.GetChanges(), true);
return (DB.Save_Data(dt));

DS_xxx sind dabei die DataSets, und yyyDataTable die darin enthaltenen Tabellen. Kann man das ganze irgendwie (über Generics und Extensions o.ä.) so umschreiben, das ich nurmehr folgendes schreiben muss:


DS_xxx.yyyDataTable dtzzz = new DS_xxx.yyyDataTable();
dtzzz.???(DB.Get_Data());

// bzw.

DB.Save_Data(dtzzz.???);

Mit .Net3.5 und seinen Möglichkeiten bin ich leider noch nicht so vertraut. Vielleicht gibt es ja einen Trick, wie ich die Umwandlung einfach gestalten kann.

mfG
Thomas

Thema: SVN Repositoryaufbau
Am im Forum: Rund um die Programmierung

Hallo Juy Juka

also die Plugins wissen nicht auf welchem System die Tabelle liegt, dies ist schon über Interfaces geregelt. Nur die Serverbusinesslogik ist geteilt, eben in SQL oder Oraclezugriffe. Das Problem ist eben die Erweiterung dieser Server-BL. Hier kann es gleichzeitig zu Änderungen in beiden Bereichen kommen. Ich habe meine Serverlogik so aufgebaut, das für jede Tabelle ein eigenes Projekt vorhanden ist. Zusammen mit meinen Plugins, Libraries usw. ergeben sich derzeit 145 Projekte. Nach Deinem Aufbau wären das dann auch soviel Repositories. Wäre das dann aber nicht ein großer Aufwand alle Änderungen zu Comitten und zu Pushen, oder gibt es dann eine Möglichkeit dies Batchgesteuert zu machen?

Thomas

Thema: SVN Repositoryaufbau
Am im Forum: Rund um die Programmierung

Hallo Norman-Timo

so hatte ich dies auch im ersten Entwurf gemacht. Nachdem ich aber immer über die Branches gelesen hatte, glaubte ich dies nach meinem ersten Post so aufteilen zu müssen. Aber wenn man es doch alles in einem durch macht dann kann ich ja munter so weiter arbeiten. Vielen Dank für Deine Antwort.

lG
Thomas

Thema: SVN Repositoryaufbau
Am im Forum: Rund um die Programmierung

Hallo

wir wollen jetzt in der Firma (endlich) ein Sourcecontrolsystem einführen (GIT-System). Ich habe aber das Problem, das ich nicht weiß, wie ich dieses aufbauen soll. Ich habe z:B. folgene Projekte in einer Solution:

    
  Server
  Server_BL
    -- Oracle
      -- Zugriff auf Tabelle a
      -- Zugriff auf Tabelle b
      usw.
    -- SQL
      -- Zugriff auf Tabelle a
      -- Zugriff auf Tabelle b
      usw.
  Interfaces
  Remoting
  Client
    -- Plugin A
    -- Plugin B
    usw.

Jetzt greifen die Plugins vom Client über Interfaces und Remoting auf die Zugriffe der DB's zu. Ein Plugin kann sowohl auf Oracle als auch auf SQL zugreifen. Jetzt war meine Überlegung, das ich ein Repository für jeden Bereich (Server, Server-BL...) anlege und dort mit verschiedenen Branches die Zugriffe auf Oracle und SQL oder die Plugins mache. Wenn ich dies tue habe ich aber das Problem, wenn ich für ein Plugin sowohl für SQL und Oracle mache. Dann müsste ich ja dauernd zwischen den beiden Branches hin und her switchen. Oder wie läuft das ganze richtig ab?

lG
Thomas

Thema: Problem bei schreiben in Datenbank
Am im Forum: Datentechnologien

Hallo XenoLith

Du hast folgenden Code für das Update verwendet:


            this.table1TableAdapter.InsertQuery("heavy", "on", "the", "woodway");
            strykerDataSet.AcceptChanges();
            this.table1TableAdapter.Update(this.strykerDataSet.Table1)

Wenn Du ein AcceptChanges auf eine Tabelle / Dataset machst, dann setzt Du alle Rowstates auf "normal" zurück. Der Updatebefehl schaut aber bei jedem Datensatz auf dieses Flag und schreibt nur die Datensätze zurück, bei denen es auf "geändert" oder "neu" steht. Probier es mal ohne diese Zeile, dann müsste es klappen.

lG
Thomas

Thema: Tastendruck versenden
Am im Forum: GUI: Windows-Forms

Hallo

meiner Meinung nach solltest Du das Konzept von MichlG aufnehmen. 2. Formular generiert einen Event bei dem die Taste mitgegeben wird. Das vom 1.Formular registriert dieses und sendet den empfangenen Wert an das Browser-Control

lG
Thomas

Thema: Literal string aus Datenbank laden
Am im Forum: Datentechnologien

Hallo

wie ist denn dein J-Laufwerk definiert? Normalerweise wird es irgenwie wie \\fileserver\Freigabename lauten. Und diesen Freigabenamen musst Du natürlich auch mit angeben.

mfG
Thomas

Thema: Oracle Datenbank
Am im Forum: Datentechnologien

Hallo

probier mal folgenden Connectionstring aus :



  Data Source=(DESCRIPTION=
  (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=db.htl-kaindorf.ac.at)  (PORT=1521)))
  (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));
  User Id=golmab05;Password=****;


Thomas

Thema: Datenbanken synchronisieren
Am im Forum: Datentechnologien

@FZelle

nach solchen Stichwörtern habe ich gesucht. Das mit dem "Synchronisation Service" sieht ganz gut aus (habe auch schon Beispiele für Oracle im Netz gefunden). Werde mir das mal in den nächsten Tagen ansehen und dann eventuell hier darüber berichten.

Thomas

Thema: Datenbanken synchronisieren
Am im Forum: Datentechnologien

Hallo

ich habe das ganze so wie Krieger beschrieben hat gelöst. Für meine Zwecke reicht das ganze, auch die Geschwindigkeit geht so (250000 Datensätze in 1,5 Minuten, wobei das laden der Daten den größten Zeitanteil verbraucht).

@Norman-Timo

Kennst Du fertige Tools die auf beide Datenbanken zugreifen können?

Grüße Thomas

Thema: Datenbanken synchronisieren
Am im Forum: Datentechnologien

Hallo

leider ist der Server im Netz unser ERP-System (Baan), d.h. auf diesem Server kann ich keine Änderungen vornehmen. Ich möchte halt die benötigten Tabellen lokal halten, damit ich von zu Hause (Telearbeit) nicht immer online sein muss. Für den SQL-Server habe ich ein Tool "SQL-Diff" von Apex, mit dem ich diese synchron halten kann. Dieses wollte ich halt für Oracle nachprogrammieren. Daher sollte das ganze so neutral sein, das es mit beliebigen Tabellen arbeiten kann.

mfG Thomas

Thema: Datenbanken synchronisieren
Am im Forum: Datentechnologien

Hallo

also über die Suche habe ich nichts gefunden (ich arbeite jetzt schon seit einer Woche an dem Problem). Es soll halt am Schluss in der lokalen DB das gleiche stehn wie im Netz. Ich habe schon probiert, das händisch zu lösen, also

  1. welche DS wurden gelöscht
  2. welche DS sind neu
  3. welche wurden geändert


Da das ganze aber für alle Rows und Columns gemacht werden muss, dauert das ganze genau so lange wie der erste Ansatz.

Gruß Thomas

Thema: Datenbanken synchronisieren
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <Oracle 9i und 10g>

Hallo Leute

ich habe hier zwei Orcaleserver (im Netz 9i und Lokal eine 10g-Express). Ich möchte jetzt aus dem Netzwerk einige Tabellen Lokal ablegen. Die Verbindung und das auslesen der Tabellen funktioniert einwandfrei, d.h. ich habe z.B. zwei DataTables mit den Tabellen im Programm. Wie kann ich jetzt diese beiden Tabellen vergleichen und die Änderungen dann lokal abspeichern. Im Moment löse ich dies so, dass ich die Tabelle lokal leere und alle Datensätze dann kopiere. Bei einigen wenigen und kleinen Tabellen geht dies ja noch, aber das muss doch besser gehen. Mit Merge habe ich es schon versucht, das liefert aber keine brauchbren Ergebnisse. Vielleicht weiß ja einer von den Datenbankspezialisten wie man das lösen kann.

mfG
Thomas

Thema: Backgroundworker und Mehrsprachigkeit
Am im Forum: Rund um die Programmierung

Hallo herbivore

Danke für den Tip. Ich musste nur im Backgroundworker in der Dowork-Methode über Thread.CurrentUICulture die aktuelle Sprache setzen und schon geht alles wieder (auch ohne InvokeRequired)

Wieder einmal hat das Forum super geholfen!

Thema: Backgroundworker und Mehrsprachigkeit
Am im Forum: Rund um die Programmierung

Hallo

das Problem wurde von mir vielleicht nicht ganz klar dargestellt. Bis zur Umstellung auf Mehrsprachigkeit (Localizable = false) hat ja alles mittels Backgroundworker funktioniert (der kümmert sich ja um das Invoke selbst). Nachdem ich aber Localizable auf true gesetzt habe musste ich das Invoke selbst noch abfragen (daher auch dies im Workerthread). Wenn ich das mache funktioniert ja alles wieder (keine Fehlermeldung) nur die Texte sind dann eben nicht in der gewünschten Sprache sondern in der Default. Für mich sieht es so aus, alsob der Workerthread eben in einem Defaultthread läuft und die Sprache noch in einem zusätzlichen Thread gestartet wird, aus dem dann der Backgroundworker arbeitet.

Thomas

Thema: Backgroundworker und Mehrsprachigkeit
Am im Forum: Rund um die Programmierung

Hallo Leute

Ich habe eine Server/Client-Anwendung mit einem Pluginsystem auf der Clientseite. Diese werden über eine seperate Domain im Clienthauptprogramm geladen. In einem Modul ist eine längerdauernde Funktion, die Daten aus eine Datenbank in Excel umkopiert. Um die GUI nicht zu blockieren, wurde diese Funktion in einen Backgroundworker ausgelagert. Im Plugin wird ein Fortschrittssfenster geöffnet und der Backgroundworker gestartet. Dieser aktualisiert dann einen Fortschrittsbalken auf dem Formular. Dies funktioniert alles bestens. Nun ist mein Programm aber mehrsprachig aufgebaut (über die mechanismen von .NET, also Resourcen ...). Hier mal die Code-Relevanten Teile:

Plugin:



    private void RunBackground()
    {
      frmFortschritt = new Fortschritt(this.Bounds);
      frmFortschritt.Max = (akt + ms + 1) * frmWahl.Gewaehlt.Count;
      frmFortschritt.Closed += new EventHandler(frmFortschritt_Closed);
      frmFortschritt.Cancel = Export;
      frmFortschritt.Show();

      bgwExcel.DoWork += new DoWorkEventHandler(bgwExcel_DoWork);
      bgwExcel.ProgressChanged += new ProgressChangedEventHandler(bgwExcel_ProgressExport);
      bgwExcel.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgwExcel_ExportCompleted);
      bgwExcel.WorkerReportsProgress = true;
      bgwExcel.WorkerSupportsCancellation = true;
      bgwExcel.RunWorkerAsync(Export);
    }
 
    private void bgwExcel_ProgressExport(object sender, ProgressChangedEventArgs e)
    {
      Show_Fortschritt();
    }

    private void bgwExcel_ExportCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
      if ((bool)e.Result)
      {
        frmFortschritt.Set_Text(Properties.Resources.DatenWurdenExportiert);
        //Show_Text(Properties.Resources.DatenWurdenExportiert);
      }
    }
		
    delegate void SetTextCallback(string text);

    private void Show_Text(string Text)
    {
      if (frmFortschritt != null)
      {
        if (frmFortschritt.InvokeRequired)
        {
          SetTextCallback d = new SetTextCallback(Show_Text);
          frmFortschritt.Invoke(d, new object[] { Text });
        }
        else
          frmFortschritt.Set_Text(Text);
      }
    }

    private void Show_Fortschritt()
    {
      if (frmFortschritt != null)
      {
        // if (frmFortschritt.InvokeRequired)
        // {
        //   frmFortschritt.Invoke(new MethodInvoker(Show_Fortschritt));
        //   return;
        // }
        frmFortschritt.Aktuell = frmFortschritt.Aktuell + 1;
        frmFortschritt.Set_Text();
      }
    }

Fortschrittssdialog:


    public int Aktuell 
    { 
      get { return (pgbFortschritt.Value); } 
      set { pgbFortschritt.Value = value; }       // <-- Hier Fehler
    }

    public void Set_Text(string Text)
    {
      label1.Text = Text;                                 //<-- Hier Fehler
      btnCancel.Text = "OK";
    }


Wenn ich das Programm jetzt starte, dann bekomme ich beim Aktualisieren des Fortschrittbalkens (im ProgressChanged) und beim Completed die Fehlermeldung : "Ungültiger threadübergreifender Vorgang". Wenn ich dann den auskommentierten Teil einbaue, dann funktioniert das Programm wieder, allerdings sind dann die Texte in Deutsch (also Defaultsprache). Kann mir jemand helfen, wie ich das Problem löse, so dass die Texte in der gewünschten Sprache ohne CrossThreadError angezeigt werden?

vielen Dank im Vorraus

Thomas

Thema: Control-Container ala MS Projekt
Am im Forum: GUI: Windows-Forms

Hallo Ralf

schau Dir auch mal die Kalenderkomponente von http://www.componentgo.com/ an. Diese kosten nicht allzu viel und sind ja vielleicht für Deine Zwecke ausreichend.

mfG
Thomas

Thema: Translation Editor
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo lindesbs,

schau Dir mal den "Windows Resource Localization Editor (WinRes.exe)" an, ist von Microsoft (siehe http://msdn2.microsoft.com/de-de/library/8bxdx003(VS.80).aspx). Damit kannst Du Deine Texte und sogar die Formulare bearbeiten

mfG
Thomas

Thema: Wecker Problem
Am im Forum: GUI: Windows-Forms

Hallo HuStLeR,

Du könntest auch noch eine Abfrage einbauen, ob die Aktuelle Zeit mehr als z.B. 15min nach der Startzeit ist. Dann halt nicht klingeln, sonst schon. Der Vorschlag mit dem Tag hat halt den Nachteil, dass Du den Wecker jeden Tag neu stellen musst.

Thomas

Thema: VS2005(C#) - Bibliotheken ins eigene Projekt einbinden
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo

füge deine Bibliothek einfach zu der Solution als Projekt hinzu und bei den Referenzen wählts Du dann aus dem reiter "Projects" deine Bibliothek aus. Dadurch wird immer das gleiche "Ausgabeformat" gezogen

Gruß
Thomas

Thema: Class über Remoting
Am im Forum: Netzwerktechnologien

Hallo Rainbird

danke, das war es. Ich hatte die Klasse in einer anderen Assembly mit untergebracht, nach dem trennen lief es einwandfrei. Das mit dem Interface werde ich auch mal umstellen.

mfG
Thomas

Thema: Class über Remoting
Am im Forum: Netzwerktechnologien

Hallo

ich schreibe gerade eine Remoting-Anwendung. Bisher klappt alles recht gut. Nun stehe ich aber vor dem Problem, eine Klasse via Remoting zu übertragen. Hier die relevanten Teile (leicht gekürzt)

 

// Klasse, die übertragen werden soll
namespace Projektdaten
{
  [Serializable]
  public class Projektdaten
  {
    /// <summary>
    /// Projekt
    /// </summary>
    public string Titel
    {
      get { return _Titel; }
      set { _Titel = value; }
    }
    private string _Titel = String.Empty;
	}
}

// Server
using Projektdaten;

namespace RemotingObjects.Planung
{
  public class Planung : MarshalByRefObject
  {
    public Projektdaten Get_Projektdaten(string Projekt)
    {
      Projektdaten daten = new Projektdaten();
      daten.Titel = "Titel des Projekts";
      return (daten);
    }
	}
}

// Client
using Projektdaten;

namespace Planung.Stunden
{
  public partial class Stunden : Form
  {
    private void Set_Projektdaten(string Projekt)
    {
      Projektdaten dat = new Projektdaten();
      dat.Angebot = "Test";					// Das geht
      dat = _Excel.Get_Projektdaten1(Projekt);		 // hier Exception
    }
	}
}


Die Klasse "Projektdaten" ist natürlich am Server und am Client als Referenz (mit Copy local = true" mit eingebunden. Trotzdem bekomme ich immer folgende Fehlermeldung:

System.Runtime.Serialization.SerializationException was unhandled
Message="Die Assembly Projektdaten, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null kann nicht gefunden werden."
Source="mscorlib"......

Kann mir vielleicht jemand sagen, wo der Fehler liegt oder wo ich suchen muss? Ich habe schon diesen Beitrag - Remoting werte zurücklesen - gefunden, sehe aber keinen unterschied zu meinem Beispiel.

mfG Thomas

Thema: Doxygen und Umlaute
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Hulkstar

bei mir funktioniert das mit folgenden Einstellungen :

Output_Language : English
Use_Windows_Encoding

mfG Thomas

Thema: Daten in DataGridView einfügen
Am im Forum: GUI: Windows-Forms

Hallo juetho

ich finde das hat mit sauberen programmieren nichts zu tun. Ich habe im Moment auch so eine Anwendung, wo die Daten aus einer Tabelle kommen und im Grid dargestellt werden. Allerdings sind im Anschluss an die Daten noch 4 Summenzeilen, die Aufgrund der Daten in der Tabelle berechnet werden. Diese werden im Grid natürlich händisch eingefügt und NICHT in der Tabelle gespeichert. Dies ginge auch garnicht, da in der Spalte in der das Datum steht jetzt der Text für die Zeile (z.B 'Summe über xyz').

mfG Thomas

Thema: [gelöst] Invoke / Programm hängt
Am im Forum: GUI: Windows-Forms

Hallo herbivore

genau so funktioniert es, vielen Dank

Thomas

Thema: [gelöst] Invoke / Programm hängt
Am im Forum: GUI: Windows-Forms

Hallo Roki

beim zweiten Aufruf sollte doch InvokeRequired auf "false" sein, da es ja vom GUI-Thread aufgerufen wird?

Thomas

Thema: [gelöst] Invoke / Programm hängt
Am im Forum: GUI: Windows-Forms

Hallo

ich habe (bei einer Client/Server Anwendung mit Remoting) folgenden Code:



    private delegate void InsertListBoxDelegate(string s);
    private void InsertListBox(string s)
    {
      if (this.InvokeRequired)
      {
        this.Invoke(new InsertListBoxDelegate(InsertListBox), new Object[] { s });
      }
      else
      {
        lstMessages.Items.Add(s);
      }
    }

    // wird aus Remotingsystem aufgerufen (= anderer Thread)
    private void cb_OnCallbackReceived(object sender, SubmitEventsArgs e)
		{
      string s = string.Format("{0} sagt: {1}", e.Sender, e.Message);
      MessageBox.Show(s);
      InsertListBox(s);
		}


Das System empfängt die Botschaft (Messagebox im Event), geht dann in die Delegatemethode und hängt sich dann bein "this.Invoke" auf. Der Debugger lässt sich nur mehr mit "Stop" abbrechen, es kommt keine Fehlermeldung o.ä. Ich habe schon die diversen Beiträge (z.B. von herbivore in der FAQ) gelesen und wenn ich alles richtig verstanden habe, sollte der obige Code doch richtig sein?
Ich hoffe Ihr könnt mir auf die Sprünge helfen, wo der Fehler liegt, da ich bis jetzt noch nichts mit Threads zu tun hatte.

vielen Dank im vorraus
Thomas

Thema: Delphi TDateTime -> C# DateTime
Am im Forum: Rund um die Programmierung

Hallo Olcay

Der fraktionale Teil des TDateTime-Wertes gibt die Tageszeit an d.h 06:00 Uhr wäre dann 0,25 und 18:00 entspräche 0,75. Also 1.0 entspricht 86400 Sekunden, damit kannst Du es leicht umrechnen

mfG
Thomas

Thema: Hilfe: Datagrid EInträge selektiert behalten
Am im Forum: GUI: Windows-Forms

Hallo

wenn Du eine BindingSource verwendest, dann kannst Du im PositionChanged-Event die ID des markierten Datensatzes abspeichern, und diese dann nach dem sortieren über die Find-Methode wieder suchen (siehe auch Artikel im Dotnet-Magazin 7/8.06).

Thomas

Thema: SQL-Error: 26 - Error locating Server
Am im Forum: Datentechnologien

Hallo Bonvie

hast Du schon mal überprüft, welche Protokolle für den SQL-Server enabled sind (TCP/IP, Named Pipes..) vielleicht liegt es auch daran.

mfG Thomas