Laden...
Avatar #avatar-2328.jpg
Cookiie myCSharp.de - Member
Student früher Leipzig, jetzt Out of Rosenheim Dabei seit 27.06.2007 363 Beiträge
Benutzerbeschreibung

Forenbeiträge von Cookiie Ingesamt 363 Beiträge

06.08.2009 - 08:56 Uhr

verwendetes Datenbanksystem: Excel, OleDB

Hi Leute,

ich hab ein merkwürdiges Problem. Ich soll per Code (ohne installiertes Excel) eine ExelDatei auslesen. Die Funktion die das Ganze bewerkstelligt schreibt dabei die Daten in ein Dataset. Um zu überprüfen, ob die Datei der vorgegebenen Struktur entspricht vergleiche ich dann die Spaltenüberschriften mit der vorgegebenen Liste.
Und jetzt das Problem, dass mindestens eine Spalte als DBNull angezeigt wird, obwohl definitiv ein Wert drin steht. Ich sehs ja wenn ich die Datei normal mit Excel öffne.
Woran kann das liegen?


        public static DataSet ReadFromExcel(string fileName, DataSet ds)
        {
            string excelConnectionString = string.Format(_excelConnectionString, fileName);
            OleDbConnection excelFile = null;
            DataTable schemaTable;
            OleDbDataAdapter excelDataAdapter = null;
            try
            {
                excelFile = new OleDbConnection(excelConnectionString);
                excelFile.Open();
                schemaTable = excelFile.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                new object[] { null, null, null, "TABLE" });
                // Read each DataTable (i.e. Excel Spreadsheet) into the DataSet
                foreach (DataRow dr in schemaTable.Rows)
                {
                    excelDataAdapter = new OleDbDataAdapter(dr[_tableName].ToString(), excelFile);
                    excelDataAdapter.SelectCommand.CommandType = CommandType.TableDirect;
                    excelDataAdapter.AcceptChangesDuringFill = false;
                    string table = dr[_tableName].ToString().Replace("$", string.Empty)
                                   .Replace("'", string.Empty);
                    if (dr[_tableName].ToString().Contains("$"))
                        excelDataAdapter.Fill(ds, table);
                }
                excelFile.Close();
            }
            finally
            {
                if (excelDataAdapter != null) excelDataAdapter.Dispose();
                excelDataAdapter = null;
                schemaTable = null;
                if (excelFile != null)
                {
                    excelFile.Close();
                    excelFile.Dispose();
                }
                excelFile = null;
            }
            return ds;
        }

Das ist die Funktion, die ich zum Einlesen verwende. Irgend ein Fehler dabei?

Gruß Cookiie

05.08.2009 - 08:56 Uhr

Hi,

also ich war grad mit dem aktuellen FF auf der Seite und es geht wunderbar.
Vista auf aktuellen Patchstand
Silverlight 3
Firefox 3.5

Liegt vielleicht an der Firefoxversion bzw. es gibt glaub ich auch nen spezielles plugin fürn firefox bezüglich der .net unterstützung. Vielleicht wird das ja auch benötigt.

Gruß Cookiie

btw.
die Seite überzeugt mich persönlich null, nette Spielerei, mehr aber auch nicht

04.08.2009 - 09:28 Uhr
  
                // Längenabprüfung, da eine exception bei kurzen Namen kommt  
                if (c.Name.Length > 7)  
                {  
                    if (c.Name.Substring(0, 7) == "adsBool")  
                   {}  
                 }  
  

Nur so als Tipp für solche Konstrukte, schau dir mal die Methode "StartsWith" an, ich glaube die ist da besser geeignet und du sparst du überflüssige Fehlerabfragen.
Grundsätzlich nie darauf verlassen, dass eine Variable so ist wie du denkst, es sein denn du hast sie selber so zusammengebastelt und bist dir dessen auch wirklich sicher.

Gruß Cookiie

27.07.2009 - 11:03 Uhr

Hi,

ich weiß zwar nicht genau wie das bei SOAP abläuft. Aber eine Verbindung, egal wie zustande gekommen, weiß immer seinen beiden IP's. Deswegen sollte es möglich sein diese auch auszulesen. Musst du dich mal schlau machen, welche Funktionen es da gibt.

Gruß Cookiie

12.05.2009 - 11:54 Uhr

Hi,

alternativ kannst du ja auch eine Listbox verwenden.
Diese stellt dir dann 2 Methoden zur Verfügung, einmal BeginUpdate() und Endupdate().
Wenn du die Zuweisung zwischen den Methoden machst, wird die Listbox nur einmal aktuallisiert.

Gruß Cookiie

11.03.2009 - 14:59 Uhr

Ja heikel auf alle Fälle, das Hauptproblem ist einfach, die Comboboxen mit unterschiedlichen Inhalt, waren ursprünglich nicht so vorgesehen.
Das heißt vom der Projektlogik her wird das Ganze DGV nicht per Datasource, sondern mehr oder weniger händisch befüllt. Da müsste ich größere Änderungen am Projekt vornehmen und das wo ich den Code erst letzte Woche vor die Nase gesetzt bekommen habe. Mit mehr oder weniger dem Kommentar mach mal eben^^.

Falls es Fortschritte gibt meld ich mich wieder. Auf alle Fälle danke für die Hilfe, hat zumindest zum Teil was gebracht.

Gruß Cookiie

11.03.2009 - 13:56 Uhr

(ot) Hab mich grad gewundert, warum meine Antwort nicht im Thread auftaucht, man sollte nicht nur auf Vorschau klicken, sondern auch auf Antwort erstellen^^. (/ot)

Die neue DataSource der 2. Spalte muß auf jeden Fall alle Werte umfassen, die in dieser Spalte bereits eingegeben sind.
Und genau die will Cookie ja einschränken.
Wird jedoch durch die Einschränkung ein bereits eingegebener Wert in dieser Spalte ungültig kriegtern DGV-Error.

Genau das ist auch beim ersten Versuche passiert, also ich versuchte die Änderungen zentral im Column zu ändern. Was im Nachhinein natürlich nicht gehen kann. Wenn ich Items lösche die eine andere Reihe benötigt kracht es logischerweise.
Aber die Hinweise euerseits haben mich zumindest soweit gebracht, das ich das Event schön auswerten kann, die Datenbefüllung bekomme ich auch noch irgendwie hin. Probier im Moment das über eine Relation und Datasourceanbindung zu lösen.

Der Code sieht im Moment so aus


private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
                //if (dgv.CurrentCell.ColumnIndex == 0)
            //{
            //    ((DataGridViewComboBoxColumn)dgv.Columns["colQuery"]).Items.Clear();
            //    ((DataGridViewComboBoxColumn)dgv.Columns["colQuery"]).Items.Add("");
            //    ((DataGridViewComboBoxColumn)dgv.Columns["colQuery"]).Items.AddRange (dataSourceQueryItems [dgv.CurrentCell.Value.ToString()]);
            //    ((DataGridViewComboBoxColumn)dgv.Columns["colQuery"]).DisplayMember = "";
            //}
            if (dgv.CurrentCell.ColumnIndex == 1)
            {
                dgv.CurrentRow.Cells[2].Value = dgv.CurrentCell.EditedFormattedValue;
            }
}

Der auskommentierte Code verursacht den DataError beim DataGridView. Bei Teil2 war interessant, dass zum Zeitpunkt des Events noch der alte Wert als Value gesetzt ist und der neue im EditedFormattedValue.

Gruß Cookiie

11.03.2009 - 08:55 Uhr

Guten Morgen,

na das kann ja dann heiter werden. Wirklich weiter hilft mir das jetzt zwar nicht, aber immerhin hab ich jetzt 1-2 ansätze mit denen ich weitermachen kann.

Aber danke erstmal.
Bei Erfolg oder weiteren Problemen melde ich mich wieder.

Gruß Cookiie

10.03.2009 - 15:43 Uhr

Hi,

hab jetzt schon die Forensuche und MSDN gequält, bin aber bisher nicht zum erwünschten Ziel gekommen.
Folgendes Problem, ich habe ein DataGridview mit mehreren Columns. Unter anderem 2 DataGridViewComboBoxColumns. Mein Wunsch ist es jetzt, wenn ich in der ersten ComboBox ein Item auswähle die 2te Combobox in der gleichen Reihe neu zu befüllen.
Nachdem man einer einzelnen Zelle in einem DataGridView kein Event zuweisen kann, muss man das ja dem Ganzen DataGrid antun.
Habe es jetzt schon mit einer Reihe von verschiedenen Event-Aufrufen probiert, aber keiner führt zum Erfolg.
Auf MSDN bin ich dann auf folgendes Konstrukt gestoßen...


private void dataGridView1_EditingControlShowing(object sender,
    DataGridViewEditingControlShowingEventArgs e)
{
    ((ComboBox)e.Control).SelectedIndexChanged +=
        new EventHandler(ComboBox_SelectedIndexChanged);
}

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    ((ComboBox)sender).BackColor = (Color)((ComboBox)sender).SelectedItem;
}

Was ich jetzt einfach nicht auf die Reihe bekomme, aus dem Sender oder e, mir die passende Row und column zu schnappen, um damit dann die andere Combobox eindeutig auswählen zu können.
Ich bekomme entweder beim kompilieren oder Debuggen Umwandlungsexeception wegen Typungleichheit.

Ich hoffe ihr könnt mir weiterhelfen.

Gruß Cookiie

29.01.2009 - 15:57 Uhr

Warum nimmst du dann nicht diese Beispiele und änderst die entsprechend um?
Normalerweise wird bei einer Datumsdifferenz direkt DateTime verwendet alternativ Timespan.
Ich weiß jetzt nicht wie es bei einem Bankjahr aussieht, aber bei 360Tage/jahr und entprechend 30Tage/Monat, sollte so ein Code schnell gebastelt sein.

Gruß Cookiie

20.01.2009 - 12:00 Uhr

Hi Leute,

ich hänge hier grad an nem Problem. Und zwar arbeiten wir mit aktuell List & Label 13 (Problem gabs aber wohl schon bei Version 11). Die Berichte werden mit dem Designer erstellt. Wenn ich in diesen Bericht ein Bild hinzufüge und dann in unserem Programm aufrufe funktioniert alles wunderbar. In der Vorschau ist das Bild noch zu sehen. Dann klicke ich auf RTF-Export und es wird die RTF-Datei erzeugt und in Word geöffnet.
Wenn das dann aber ausdrucke, ist das Bild entweder garnicht vorhanden oder innerhalb des Objektcontainers verschoben und/oder mit schwarzen Balken versehen.

Bei meiner Suche im Netz habe ich nirgendwo sowas gefunden, nicht mal im Ansatz udn ich bin im Moment recht ratlos woran es liegen könnte.
Aber vielleicht hat ja jemand ne spontane Idee.

Gruß Cookiie

11.09.2008 - 10:58 Uhr

Bei Listen auch die grouping-Eigenschaft überprüfen.

08.09.2008 - 12:55 Uhr

Ok danke erstmal, werd ich mir auf alle Fälle mal anschauen.

Edit:
so auf den ersten Blick ne tolle Sache, Problem, wir haben Donnerstag Release^^, Also etwas kurzfristig, zumal für mich jetzt nicht ersichtlich ist, ob die neu erstellten Reports mit unserer Software kompatibel sind.

Gruß Cookiie

08.09.2008 - 09:26 Uhr

Hallo Leute,

es geht um folgendes, wir haben mehrere Berichte innerhalb unseren Projektes und es gibt dabei mehrere Probleme mit der Darstellung.
Zum einen ergeben sich Unterschiede in der Darstellung zwischen dem Designer und dem Ausdruck über die Software (welche nichts mehr an dem Report ändert, außer ihn mit Daten zu füllen).
Es verrutschen Textfelder, die Seiten wandern teilweise über die Blätter usw.
Die meisten Probleme konnte ich beheben, indem ich die Can Grow-Eigenschaft auf false gesetzt habe. Ebenso die Definition der Seite angepasst haben, A4 mit Margins, Body dann der Rest, entsprechend der Seitenanzahl.

Ein Problem bleibt aber trotz allem, wenn ich eine Tabelle habe, die mit Werten gefüllt wird, passiert es mitunter das eine Seite dafür nicht reicht und die Tabelle auf der nächsten fortgesetzt wird. Soweit so gut und auch gewollt, der Header wird auch neu geschrieben. Nun ist aber gewünscht, dass der Text nach der Tabelle auf dem selben Blatt fortgesetzt wird und nicht wie es jetzt ist, Tabellenende und auf der nächsten Seite kommt dann der Abschlusstext, welcher aber noch locker auf der vorherigen Seite gepasst hätte.

Jetzt zudem was ich will 🙂, erstens, wenn jemand direkt ne Lösung, Tipps parat hat, immer her damit. Zweitens kennt jemand noch andere Seiten, Foren, Blogs wo mir geholfen werden kann. Drittens, kennt jemand ein wirklich gutes Buch was ein wenig mehr in die Tiefe geht was Reporting Services angeht. Mir geht es vorallem um die Lösung von Praxisprobleme und wie genau die Eigenschaften definiert sind. Ich habe teilweise den Eindruck das das setzen der Eigenschaften null Effekt hat.

Ich werde selber noch weiter suchen und auch in der MSDN rumwühlen, aber vielleicht kennt jemand ja schon was hilfreiches.

Gruß Cookiie

03.09.2008 - 16:14 Uhr

so spontan, nen Rechteck auf den body packen, dafür sorgen das alles transparent ist und dann im rechteck die linie machen und an die richtige stelle schieben.
mit Ebene vor und zurück kannste dann auch noch rumspielen.

Gruß Cookiie

02.09.2008 - 11:44 Uhr

Als erstes empfehle ich dir folgenden Artikel Weshalb-viele-Systeminfo-Tools-falsche-CPU-Temperaturen-anzeigen, der aktuelle Probleme bei solchen Mess/Steuertools aufzeigt.

Und Punkt 2, da von David falsch gesagt. Lüfter im PC-Gehäuse oder CPU-Lüfter laufen meist im Bereich von 7-12V. Unterhalb von 7 Volt reicht bei einem Großteil der Lüfter die Energie nicht mehr aus und sie laufen garnicht mehr, was sicherlich auch nicht gewünscht ist.

Gruß Cookiie

02.09.2008 - 11:34 Uhr

Im Prinzip musst du ein Element fix nehmen und dann dieses mit allen als Paar darstellen. Danach entfernst du das fixe Element aus der wählbaren Menge und fixierst das nächste usw.

Also erst 1 fix, alle Kombi's 1-2, 1-3, 1-4. Dann entfernst du die 1 aus dem Pool.
Kannst du mit Array's oder besser Listen lösen. Sind dann einfach Schleifendurchläufe, durch das entfernen des fixen Elements hast du auch keine Dopplung drin und sparst dir das doch recht zeitaufwendige Prüfen.

Gruß Cookiie

02.09.2008 - 10:54 Uhr

Habs jetzt so gelöst das ich das Feld nicht ausblende, aber den Inhalt, in Abhängigkeit von meiner Expression, das verhindert das hochrutschen.

01.09.2008 - 17:30 Uhr

Hi,

ich sitze grad vor einem Folgeproblem. Auf ner Seite habe ich textboxen die dynamisch ein/ausgeblendet werden, nur leider rutschen dann die folgenden Textboxen, die darunter angeordnet sind nach oben.
Das Ganze ergibt für mich aber keinen Sinn, ich lege doch bei Location die Position innerhalb des Repots fest, warum sollte es diese dann verändern.
Wäre auch nur halb so schlimm, aber wir haben hier als Hintergrundbild nen Antrag, wo die Felder feste Positionen haben, also auch direkt wo ich sie festlege sein müssen.
Muss ich jetzt damit leben oder gibts da andere Lösungen?

Gruß Cookiie

28.08.2008 - 11:33 Uhr

Das ist ja grad das schöne an den Commands. Die Stringfummelei fällt dann im Prinzip komplett weg (bis auf ein paar grundlegende Sachen). Den Rest erledigt dir der Stringbuilder.
Ich gebe dir recht, am Anfang ein Mehraufwand, hinterher hast du es dann umso einfacher. Gerade wenn du was ändern möchtest, im Extremfall ne andere DB, dann ist das schnell erledigt.
Musst du jetzt halt für dich entscheiden, wie sehr dich das Programm später noch verfolgen wird, Wartung etc. und wenn du dich eh einarbeitest, dann kannst du das auch gleich "richtig" machen. Aufwand <-> Nutzen
Vielleicht noch ein paar Vorteile von den Commands.
Du hast Datensicherheit in Bezug auf den Connection-String, den Parametern usw. das heißt der Abfrage-String stimmt dann immer, da gibts dann keine Fehler aufgrund falsch zusammengesetzter SQL-Strings.

Gruß Cookiie

28.08.2008 - 09:36 Uhr

Wollte dir auch grad Firebird empfehlen. Ist auch kostenlos und kann einfach so weitergegeben werden. Gibt auch nen C#-addin zum ansprechen der DB.
Am besten testen, musst halt sehn was dir da am ehesten zusagt.

Gruß Cookiie

28.08.2008 - 08:38 Uhr

Wenn den SQL_String im Code zusammenbaust, kannst du es so machen.


string ph = string.null (standars leerer string, bitte korrigieren, bin mir da grad ned sicher)
ph = @"feld1='alle'"
string sqlstring = @"Select Feld1, Feld2 where " + ph;

so oder so ähnlich kann das dann aussehen.
Habs jetzt nicht getestet.

Gruß Cookiie

27.08.2008 - 10:46 Uhr

Ok dann probier ich da mal weiter rum. Die Reports sehen jetzt eh schon besser aus als vorher.

Danke erstmal.

27.08.2008 - 10:38 Uhr

Abhilfe schafft es die Seiten mit den richtigen Rändern zu definieren und etwas "Luft" zu lassen.

Zellengröße fest vorgeben, genug Rand um die Inhalte.

Hi Bernd,

Genau darum gings mir, hast du da ein paar Werte mit denen ich arbeiten kann?
Als Margingrößen habe ich momentan 2,5cm, 1cm, 1cm, 1cm (l,r,o,u) sind die so ok oder sollte ich besser andere nehmen?

Und wie kann ich zum Beispiel verhindern, dass es mir meine Tabelle auseinander reisst? Header zB. noch auf Blatt 1 und die Zeilen dann auf Blatt2. Ich will dann lieber alles auf Blatt 2.

Gruß Cookiie

27.08.2008 - 09:00 Uhr

Brauchst du für AntMe nicht auch das XNA-Framework?

27.08.2008 - 08:55 Uhr

Hallo Leute,

nachdem ich endlich ne Firma gefunden hab, die vernünftig mit C# programmiert, hab ich jetzt meine ersten Probleme 🙂.

Im Moment soll ich die schon erstellten Reports (SQL-Server soweit ich weiß) überarbeiten. Leider kenne ich mich herzlich wenig damit aus. Bei vielen, eigentlich allen, ist das Problem, dass diese vom Format ziemlich blöd eingerichtet sind und dadurch Dinge, die auf ein A4-Blatt gehören, in der Druckvorschau auf anderen Blättern landen oder zumindest ein leeres Zwischenblatt erzeugt wird.

Was ich inzwischen fixen konnte. Den Report selber habe ich als A4 definiert mit konkreten Margin-Werten (leerer Rand). den Textkörper (Body) habe ich dann entsprechend so gross gewählt, das er den entsprechenden Druckbereich darstellt. Also A4 -Rand = Body. Auf dem Body sind nun meistens eine List, meist in der Größe des Bodys und auf der List dann die sichtbaren Elemente, Textboxen, Tabellen etc.
Wenn ich dann nur eine Seite habe, funktioniert das eigentlich ganz gut, das das ausgedruckte auch dem gewohlten entspricht.
Sobald ich aber mehrere Seiten habe wirds kritisch. Ich habe Überlappungen und der Text wandert mit jeder neuem Datensatz, mit dem ich den Report fühle nen Stück nach unten. Durch Tabellen passiert es sehr oft das ich auf ne neue Seite rutsche durch den größeren Inhalt der dargestellt wird.
Führe ich nun vor/nach einer List nen Seitenumbruch ein, habe ich wieder leere Seiten, was ich auch nicht will.

Was ich nun suche, sind ein paar Tips, wie ich die Seiten als Richtlinie konfigurieren kann. Ich hoffe ich habe mich nicht alzu konfus ausgedrückt.

Gruss Cookiie

26.08.2008 - 17:16 Uhr

Wäre auch meine Idee, allerdings wäre es sinnvoller wenn es direkt eine normalize()-Funktion gäbe. Schau mal vielleicht haste ja Glück, ein guter Wert sind dann 98%.

Gruß Cookiie

26.08.2008 - 14:47 Uhr

Jein,

bei CD's wird es ja gemacht, alle Titel werden "normalisiert", also der lauteste Moment im Lied ist relativ gleich.
Die Lautstärkeanzeige ist dann auch davon abhängig, weil alle Titel auf einer CD mit 0dB (Dämpfung!!!) gepresst sind. Also maximale Lautstärke, eine Stereoanlage etc. dämpft nun das Signal entsprechend nach unten. Damit es leiser wird.

Bei mp3-Dateien ist nun das Problem, sie stammen von unterschiedlichen CD's (Quellen) und wurden teilweise mit unterschiedlichen Codecs komprimiert, dass heißt die Lautstärkeinfo ist bei jeder Datei anders.

Was du jetzt als Lösung brauchst ist ein Referenzpunkt, an dem du die Dateien festmachst. Also eine Datei, wo du sagst das passt und dann normalisierst du alle anderen mp3' auf diese. Es empfiehlt sich da natürlich eine relativ laute. Hinterher dämpfen ist einfacher als im Nachhinein eine Datei lauter machen, das Rauschen spielt hier dann eine starke Rolle.

Es empfiehlt sich wahrscheinlich sowieso, für unterschiedliche Stilrichtungen jeweils eine eigene Referenz zu nutzen, da dir sonst viel Dynamik verloren geht.

Gruß Cookiie

26.08.2008 - 11:40 Uhr

Nicht wundern, sonder danke dem Computergott, dass er Mitleid mit dir hatte 🙂

26.08.2008 - 11:36 Uhr

Hey richtig Kultig wirds erst mit dem KC87 und Datasette^^.

Wer's ned kennt, Top Technik Made in GdR by Robotron 🙂.
Da war ich glaub aber noch 10 oder so wo das aktuell war, also ewig her.

Gruß Cookiie

15.02.2008 - 10:26 Uhr

Super muss ich mal auf dem Firmenrechenr das vs2005 drauf machen und dann testen.
Danke schonmal.

Gruß Cookiie

15.02.2008 - 08:41 Uhr

@unclesam

DB Designer hat leider keine Schnittstelle zu Firebird, den hatte ich mir schon angeschaut. Werd ich eventuell dann hernehmen, um mir das selber zusammen zuklicken, aber da kann ich im Prinzip auch Visio nehmen, bringt dann auch nicht mehr Vorteile.

@FZelle
wie geht das mit den Extension für Firebird? Höre ich zum ersten Mal.

Gruß Cookiie

14.02.2008 - 14:03 Uhr

Wenn ihr beide im selben lokalen Netzwerk hängt, habt ihr beide die selbe globale IP.
Sollte dein Freund in einem anderen lokalen Netzwerk sitzen, hast du keine Möglichkeit seine externe IP einfach so herauszufinden. Es sei denn er ist bei dyndns oder einem ähnlichen Anbieter angemeldet, der den Vermittler spielt.

Gruß Cookiie

14.02.2008 - 13:16 Uhr

verwendetes Datenbanksystem: Firebird

siehe oben, das Programm soll mir im optimalen Fall aus einer vorhandenen DB das entsprechende ER-Modell generieren. Das Ganze muss allerdings eine mit Firebird kompatibel sein.
Zweite Möglichkeit, ein Programm mit dem ich recht einfach mir das ER-Modell von Hand zusammenklicken kann inklusive den Beziehungen zwischen den einzelnen Tabellen.
Die Programme sollten nach Möglichkeit kostenlos sein. Von Hand ist das nen recht großer Aufwand, da alles große Tabellen sind und insgesamt über 200 Stück in der DB stecken.

Schonmal danke im Vorraus.

Gruß Cookiie

14.02.2008 - 08:48 Uhr

Hab das Problem auch, bei der Installation bricht es gleich am Anfang ab mit einer ähnlichen Fehlermeldung, die im Prinzip nur sagt das es nicht weiß warum es abbricht.
Selbst auf nem frisch installierten XP war das so.
Komischerweise wollte danach auch die vs2005ee erstmal nicht, nachdem ich die c#-express installiert hatte ging dann komischerweise.
Vermute mal der kommt bei der Installation der Frameworks durcheinander.

Gruß Cookiie

28.01.2008 - 14:51 Uhr

Hi, ich denke auch das die Kostenfrage für die Delphi-Entwicklungsumgebung das Totschlagargument ist. Soweit ich gesehn habe gibt es da nur eine 30tägige Trial-version. Na dann muss ich mal schaun, wie ich dem das am Besten verkaufe.
Danke schonmal.

Gruß Cookiie

28.01.2008 - 12:55 Uhr

Hi Leute,

ich hab ein kleines Problem. Mein Chef will gerne eine Online-Anwendung auf ASP-Basis.
Er will dazu aber Delphi für .NET verwenden. Da ich allerdings herzlich wenig Ahnung davon habe wie und was ich dafür brauche. Meine Frage an euch, hat schon jemand Erfahrung damit und ist das so überhaupt machbar?
Und falls ja, was brauche ich dafür alles, was empfiehlt sich als Entwicklungsumgebung und wo bekomme ich die her. Nach Möglichkeit kostenlos.
Ich weiß viele Fragen, aber ich brauch einfach nur nen schnellen Überblick von Leuten die das wissen. Dann ist mir schon geholfen.

Gruß Cookiie

12.12.2007 - 11:03 Uhr

Hi,

ich verwende zwar TCP, aber sollte kein Problem sein das anzupassen.


this.netStream = c.GetStream();
//byte-Buffer für empfang
this.empfang = new byte[c.ReceiveBufferSize];
if((this.empfangSize = netStream.Read(this.empfang, 0, (int) c.ReceiveBufferSize)) > 0)
{
this.empfangenerTxt = Encoding.UTF8.GetString(this.empfang, 0, this.empfangSize);
}

Prinzip ist, das beim Empfang schon gelesen wird, wie gross das Ganze wird und beim konvertieren wird das Array nur bis zu dem Punkt verwendet.
Du sendest ja auch nur 30 Byte, auf der Empfangsseite wartet aber ein Array mit 100byte Größe. Auch wenn du es nur mit 30 fühlst bleiben die restlichen 70 da, aber halt leer, deswegen die /0.

Gruß Cookiie

10.12.2007 - 10:25 Uhr

Wenn ich dich richtig verstanden habe, setzt du in einem Array per Zufall die Zahl 10 und willst daherum die Zahl 5 setzen ohne nochmal das Array durchzugehen.
Ok, warum machst du das nicht gleich im selben Durchgang? Beim setzen, auch wenn es zufälig geschieht hast du ja die Indizes, dann brauchste nur noch die 8 Kombis für x, y +- 1 setzen und fertig.
Das einzige was dann vorher prüfen musst, ob die zu setzende Position (für die 5) nicht schon durch ne 10 belegt ist, weil sonst dein Profil zerstörst. Ansonsten sollte das so passen.

Gruß Cookiie

Edith: hab grad gesehn, das das oben ja schon vorgeschlagen wurde mit der neigbours-methode, halte ich aber definitiv für das Beste.
Du hast zumindest schon die fixen Positionen, um die Gültigkeitsprüfungen, wirst du nicht herumkommen. Aber das alles ist immernoch schneller als ne 2te Schleife da durch zu jagen.
Und für den Rand, Brauchste ja nur 4 Werte. 2 für x und 2 für y, dann haste alles abgedeckt.

03.12.2007 - 11:23 Uhr

Ich denke mal das Problem liegt in der Art und Weise wie du versuchst die Einträge zu ändern.
Du benutzt field oben im Schleifenkopf. field ist da aber eine Art Index, weil du eine for-each-schleife nutzt. Der Index ist aber geschützt. Ich denke es ist in dem Fall besser , wenn du das Ganze mit einer for-Schleife machst. In etwa so...


                for (int i=0; i < record.length; i++)
                {
                  record[i] = "'" + record[i] + "'," ;
                    System.Windows.Forms.MessageBox.Show("" + record[i]);
    
                 }

Ungetestet, sollte aber funktionieren.

Gruß Cookiie

03.12.2007 - 10:11 Uhr

Die Suche hätte da eigentlich helfen müssen, ich stand ja auch schonmal vor dem gleichen Problem und hab meine Lösung hier gepostet.
Sollte zusammen mit dem ursprünglichen Thread für eigene Events zur Lösung führen.

Gruß Cookiie

03.12.2007 - 10:02 Uhr

Hi,

bevor du die Sachen in das Array lädst, hast du sie einzeln vorliegen?
Wenn ja, dann leg dir doch nen Array von Datensätzen (wobei jeder datensatz/objekt die Werte einzeln hat) an oder ein 2-dimensionales Array, wenn der Aufbau immer gleich ist, also Name Vorname usw immer in der gleichen Reihenfolge sollte das keine Probleme bereiten.
Sollten die Werte allerdings schon von Anfang an so zusammen geschrieben sein, dann hast du ein Problem, weil du nicht festlegen kannst, nach welchen Regeln der String getrennt wird.

Gruß Cookiie

29.11.2007 - 09:51 Uhr

Ich glaub du hast einfach noch nen / vergessen

mach aus
file://D:\ProgrammDir\HelpDir\index.html?goto=HelpPage.html

einfach
file:///D:\ProgrammDir\HelpDir\index.html?goto=HelpPage.html

bzw. würde ich sowieso den ganzen String neutraler machen und mit @ die Sonderzeichen schützen.
Also dann so

@file:///d:\ProgrammDir\HelpDir\index.html?goto= HelpPage.html

Gruß Cookiie

14.11.2007 - 11:07 Uhr

Mein Edit schon bemerkt?

14.11.2007 - 10:57 Uhr

Also ich weiß jetzt nicht, ob das sauber ist.(wahrscheinlich nicht ^^)
Aber setze doch das Update in nen Try-catch-block, wenn die Daten in der DB trotzdem gelöscht werden, dann schmeißt es zumindest deinen Code nicht komplett aus der Bahn und du kannst weiter machen.
Trotzdem solltest du den Fehler suchen, nur kann ich dir da nicht weiter helfen, dafür kenn ich mich in dem Bereich zu wenig aus.

Edit: Fehler gefunden


            /*DELETE COMMAND*/
            string delSQL_components = "DELETE FROM COMPONENTS WHERE SWOberstufe=@p3"; //<-- der stern fehlt ^^
            SqlCommand delCmd_components = new SqlCommand(delSQL_components, sqlConnection1);
            SqlParameter p3 = delCmd_components.Parameters.Add("@p3", SqlDbType.VarChar, 30, "SWOberstufe");
            da_components.DeleteCommand = delCmd_components;

Gruß Cookiie

14.11.2007 - 10:25 Uhr

Achsoo,

wenn du die Tabelle in der DB leeren willst, dann mach das doch besser per SQL-Command und Delete.
Mit Datasets kenne ich mich da auch zu wenig aus, um wirklich 100% zu wissen ob und wie das geht. Ich hab da meine Infos auch nur aus dem Openbook und Google.
Ich weiß jetzt auch nicht ob es einen Befehl beim Dataset gibt, mit dem du es gleich komplett löschen kannst, weil nichts anderes machst du ja in deiner Schleife.
Aber im Prinzip kannst du es auch einfach überschreiben mit ds = new Dataset();, dann sind die alten Daten auch weg.

Gruß Cookiie

14.11.2007 - 09:58 Uhr

Hm,

soweit ich das sehe löscht du erst alles (jede Reihe) aus deinem Dataset und versuchst dann ein Update auf einen Datensatz, der dann natürlich nicht mehr vorhanden ist.

Gruß Cookiie

14.11.2007 - 09:55 Uhr

Hallo und willkommen im Forum,

Original von toreroma

  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        DataTable tbCheck = new DataTable();  
        DataSet1TableAdapters.ConRangerTableAdapter etbCheck = new DataSet1TableAdapters.ConRangerTableAdapter();  
        tbCheck = etbCheck.GetDataByAll();  
  
        string vonCheck = tbCheck.Rows[0][0].ToString();  
        string bisCheck = tbCheck.Rows[0][1].ToString();  
  
        int vonCheckNu = (Convert.ToInt32(vonCheck));  
        int bisCheckNu = (Convert.ToInt32(bisCheck));  
          
    }  
  

Aber mal noch was ganz anderes, wieso holst du dir die 2 Werte aus dem Datatable, wandelst sie erst in Strings um, um dann im nächsten Schritt diese Werte wieder in Ints umzuwandeln?
Wenn die Werte als int in der Table stehen, dann lass sie doch so. Die Umwandlung ist in meinen Augen völlig sinnfrei. Solltest auch bedenken, das sowas die Fehleranfälligkeit deines Programms erhöht, solltest du generell so vorgehen.

Gruß Cookiie

14.11.2007 - 09:10 Uhr

Warum denn nicht? Wenn einmal die TCP/IP-Verbindung steht, bleibt sie solange offen bis sie geschlossen wird. Während dieser Zeit kannst du beliebig viele Daten senden und empfangen. Die Datenübertragung wird ja mittels Network-Stream bewerkstelligt (oder ein anderer Stream). Du mußt auf der Empfangseite nur deinen Datenpuffer entsprechend einstellen bzw. in einer Schleife immer wieder kleinere Pakete sichern und das Ergebnis zum Schluß zusammensetzen oder wie auch immer. Kommt ja dann drauf an, was genau du machen willst.

Hier auch nochmal 2 gute Tutorials

http://www.microsoft.com/germany/msdn/library/net/csharp/NetworkingMitCSharp.mspx?mfr=true

und hier im Forum

[Tutorial] Client-/Server-Komponente über TCP-Sockets

Damit hast du auf alle Fälle einen guten Einblick in die Materie.

Gruß Cookiie

13.11.2007 - 09:20 Uhr

Sollte normal kein Problem sein, das C# im Prinzip mit allem umgehen kann. Das einzige was du wissen musst ist das richtige Encoding, damit dein String wieder korrekt ausgelesen wird.

Gruß Cookiie