Laden...

Forenbeiträge von demondriver235 Ingesamt 496 Beiträge

26.05.2006 - 11:42 Uhr

hi,

wesentlich einfacher ist wenn du mit einem dataadapter und einem command builder ein
update abhand des datatables in die entsprechende datenbank tabelle machst

dazu solltest du einiges in der dokumentation finden

kleines bsp.




 OdbcCommandBuilder cb = new OdbcCommandBuilder(mySQLAdapter);

            try
            {
                mySQLAdapter.Update(ds, "DataTableBestand");
            }
            catch (Exception SqlEx)
            {
                MessageBox.Show(SqlEx.Message.ToString());
            }
            mySQLConnection.Close();

der command builder erstellt dann anhand der rowstates die insert update und delete
anweisungen.

23.05.2006 - 15:41 Uhr

Hi ich hab mal für datagrid view eine klasse geschrieben mit der du anhand des cell values die hintergrund farben ändern kannst vielleicht hilft dir das ja schon weiter


using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace OOP
{
	/// <summary>
	/// In dieser Kalsse werden kontextabhähnige Formatierungen von Spalten oder Zeilen vorgenommen
	/// </summary>
	public class ColumnStyle
	{
        public static void cellColor(DataGridView dataGridViewLocal,int column,double threshold )
        {
            // Create a new green style.
            DataGridViewCellStyle greenStyle = new DataGridViewCellStyle();
            {
                greenStyle.BackColor = Color.Green;
                greenStyle.ForeColor = Color.Green;
            }

            // Create a new red style.
            DataGridViewCellStyle redStyle = new DataGridViewCellStyle();
            {
                redStyle.BackColor = Color.Red;
                redStyle.ForeColor = Color.Red;
            }

            // Create a new yellow style.
            DataGridViewCellStyle yellowStyle = new DataGridViewCellStyle();
            {
                yellowStyle.BackColor = Color.Yellow;
                yellowStyle.ForeColor = Color.Yellow;
            }

            for (int rowCounter = 0; rowCounter < dataGridViewLocal.RowCount; rowCounter++)
            {
                double cellValue = (double)dataGridViewLocal.Rows[rowCounter].Cells[column].Value;

                if (cellValue < threshold)
                    dataGridViewLocal.Rows[rowCounter].Cells[column].Style = redStyle;
                else if (cellValue > threshold)
                    dataGridViewLocal.Rows[rowCounter].Cells[column].Style = greenStyle;
                else
                    dataGridViewLocal.Rows[rowCounter].Cells[column].Style = yellowStyle;
            }
        }


	}
}



17.05.2006 - 12:23 Uhr

hi

LIKE ist nur ein operator für string
für INT benutze =

Gruß

12.05.2006 - 15:27 Uhr

hi,,

erstellen doch einfach einen odbcdataadapter mit dem du per join über beide tabellen
eine abfrage ausführst und das ergebnis in einem dataset.datatable speicherst
und dieses als datasource für das grid nimmst.

09.05.2006 - 17:11 Uhr

Hallo Leute hab im Forum einiges gefunden aber nichts hat letztendlich zur Lösung des Problems geführt.

Ich habe Daten von einer AS400 (keine Schreibrechte) in ein Dataset importiert

Diese werden dann per Update in eine MySQL tabelle X geschrieben.

und dann wieder von der MysQL tabelle X mit join einer anderen Mysql tabelle Y
wieder in ein Dataset welches quell für ein datagridview ist

bei "speichern" sollen dann bestimmte columns per update in tabelle Y abgespeichert
werden in der es einen Primarschlüssel gibt den es auch im Datatable von dem
update aufgerufen wird gibt.

bei dem update sollen neue Datensätze hinzugefügt werden und verändete geändert
bzw überschrieben werden.

das einfügen neuer datensätze klappt auch problemlos aber wenn es einen wert des
primärschlüssels in tabelle Y schon gibt wird nicht überschrieben sondern die exeption
das ich Duplicate entries habe geworfen.

 
        private void SaveToMySQL()
        {
            //Verbindung MySQL herstellen
            Helper help = new Helper ();
            help.makeConnectionMysql();
            string myConnectionString = help.connectionString;

            //Verbindungszeichenfolge
            OdbcConnection myConnection = new OdbcConnection();
            myConnection.ConnectionString = myConnectionString;

            //adapter um mit cmdBuilder ein update machen zu können
            OdbcDataAdapter myTcAdapter = new OdbcDataAdapter();

            //Selectstring
            string mySelectString = @"  SELECT AUTRAGSNR, WAGENNR, PRISMDATE
                                        FROM NAGELDATAP";  

            myTcAdapter.SelectCommand = new OdbcCommand(mySelectString,        myConnection);

            //Verbindung öffen
            myConnection.Open();

            //try catch Update
            try
            {
                OdbcCommandBuilder cb = new OdbcCommandBuilder(myTcAdapter);
                myTcAdapter.Update(dsMySQLFancy1);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString());
            }
            //Verbindung schliessen
            myConnection.Close();
        }

03.05.2006 - 11:56 Uhr

hallo forum

habs mitlerweile selbst hinbekommen, falls es jemanden interessiert hier die lösung:

da crystal report X offensichtlich keine dynamischen zur laufzeit erstellten bilder unterstützt hier der umweg:

hab aus meinem bmp ein byte array gemacht:

MemoryStream ms = new MemoryStream();
 signatureBitmap.Save(ms, ImageFormat.Bmp);
byte[] buffer = ms.ToArray();

und dann ein dataTable zu meinen dataset welches ich im report benutze hinzugefügt
und den wert dort eingesetzt.
dieses feld kann man dann einfach auf den report ziehen wenn der Feldtyp BLOB ist

dsMySQLFancy1.DataTableBlob.AddDataTableBlobRow(myBlob, "1");
02.05.2006 - 12:58 Uhr

Hallo allerseits,

was ich möchte ist: in einem form wird mit einem PCpen eine unterschrift
in ein panel eingetragen diese wird dann temporär auf festplatte als bmp gespeichert
und diese bmp möchte ich in einem crystal report angezeigt haben.

mein problem ist: wenn ich dieses bild als datei (oleobjekt) in meinen bericht eingefügt
habe bleibt die bmp immer die die es zum zeitpunkt des erstellen war.
wenn ich eine neue unterschrift leiste wird zwar die bmp auf platte überschrieben
aber der report initialisiert sie nicht neu.

kann mit da vielleicht jemand helfen.....??

15.03.2006 - 21:30 Uhr

was für eine odbc verbindung nutzt du?

22.02.2006 - 16:09 Uhr

ich habs letzten endes doch noch mit update hinbekommen

falls es jemanden interessiert hier der code:


 private void buttonRefresh_Click(object sender, EventArgs e)
        {
            //============================
            //Helper Klasse initialisieren
            //============================
            Helper help = new Helper();
            SqlStrings strings = new SqlStrings();


            //==============================
            //Verbindungsinformationen laden
            //Verbindung testen & herstellen
            //==============================
            help.makeConnectionAs400();


            //=================
            //Connection string 
            //=================
            string myConnectionstring = help.connectionString;
            this.myodbcConnection.ConnectionString = myConnectionstring;


            //=============
            //Select string
            //=============
            strings.getRawPrismData();
            string mySelectString = strings.RawPrismData;
            this.myodbcDataAdapter.SelectCommand.CommandText = mySelectString;


            //======================
            //Datasettabellen leeren
            //======================
            dS_RawPrismData1.Clear();


            //===================
            //Parameter erzeugen
            //===================
            this.myodbcCommand.Parameters.Add(new System.Data.Odbc.OdbcParameter("OMRQDT", System.Data.Odbc.OdbcType.Decimal, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(7)), ((System.Byte)(0)), "OMRQDT", System.Data.DataRowVersion.Current, null));
            this.myodbcCommand.Parameters.Add(new System.Data.Odbc.OdbcParameter("OMRQDT1", System.Data.Odbc.OdbcType.Decimal, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(7)), ((System.Byte)(0)), "OMRQDT", System.Data.DataRowVersion.Current, null));


            //========================
            //Parameterwerte einsetzen
            //========================
            myodbcDataAdapter.SelectCommand.Parameters["OMRQDT"].Value = "1060214";
            myodbcDataAdapter.SelectCommand.Parameters["OMRQDT1"].Value = "1060214";


            //===================================================
            //Um allen Rows im Dataset den Status added zu geben
            //===================================================
            myodbcDataAdapter.AcceptChangesDuringFill = false;


            //==============
            //Dataset Füllen
            //==============
            try
            {
                myodbcDataAdapter.Fill(dS_RawPrismData1);
            }
            catch (OdbcException ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
            }
            

            //===============
            //Datagrid füllen
            //===============
            this.dataGridView1.DataSource = dS_RawPrismData1.Table;


            //==========================
            //AS400 Verbindung schließen
            //==========================
            this.myodbcConnection.Close();


            //==============================
            //Verbindungsinformationen laden
            //Verbindung testen & herstellen
            //==============================
            help.makeConnectionMysql();


            //=================
            //Connection string 
            //=================
            myConnectionstring = help.connectionString;
            this.myodbcConnection.ConnectionString = myConnectionstring;


            //=======================
            //MySQL Verbindung öffnen
            //=======================
            myodbcConnection.Open();

            
            //===============================
            //Dataset update in MySQL Tabelle
            //===============================
            try
            {
               OdbcCommandBuilder cb = new OdbcCommandBuilder(mySQLodbcDataAdapter);
                mySQLodbcDataAdapter.Update(dS_RawPrismData1);
            }
            catch (DBConcurrencyException dbex)
            {
                MessageBox.Show(dbex.ToString());

            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler..." + ex);
            }

        }



22.02.2006 - 14:13 Uhr

erstmal vielen dank für die ganzen tipps
habe alles fertig gehabt und dann zum gleichen ergebnis gekommen
wie boco25 - die daten vertragen sich wirklich nicht
nun meine frage an boco25:

wie stellst du dir diese prozedur vor und wo kann ich soetwas umsetzen??

21.02.2006 - 17:36 Uhr

ok besten dank dann weiß ich jetzt zumindest das ich von einem dataset keine sql
abfrage machen kann

hast du vieleicht eine bessere idee?

schleifen sind ja wie du schon sagst nicht sehr performant.

kann ich evtl die DB2 abfrage direkt in eine mysql tabelle laden
anstelle des datasets?

21.02.2006 - 17:27 Uhr

by the way DB2 ist eine Datenbank hat auch eigenen sql dialekt
aber nun gut ich weiß wie ich einen INSERT auf die mysql datenbank mache
ich weiß nur nicht wie ich an die daten aus dem dataset kommen soll
ich glaube nicht das SELECT * From dataset.datatable funktioniert
ich kann ja auch kein dataset als datenquelle eines dataadapters nehmen
oder einen dataadapter mit zwei unterschiedlichen datenbanken als quelle

oder?

21.02.2006 - 17:11 Uhr

die daten kommen mehreren tabellen einer DB2 (AS400)
und werden dann in diesem dataset kombiniert

das ergebnis soll dann in eine mysql datenbank eingefügt werden.

mein problem bezüglich dataadapter ist ich kann zwar externe datenbanken
bzw tabelle mit dem dataadapter ansprechen aber keine temporären "tabellen" wie ein dataset abfragen.

21.02.2006 - 16:56 Uhr

hi
erstmal danke für die schnelle antwort!

ich stelle mir das so vor das ich um das mal zu verbildlichen alle datansätze des
dataset.table markiert kopiert im dann in die sql tabelle einfügt

21.02.2006 - 16:47 Uhr

hallo,

ich habe diese frage schon einmal geposted aber da ich nicht wirklich resonanz bekam formuliere ich die frage einmal um.

ich möchte eigendlich nur ein gefülltes dataset 1:1 in gleich aufgebaute tabelle einer mysql datenbank kopieren.

das muss doch schon mal jemand gemacht haben oder das musste doch möglich sein ich weiß nur nicht wie ich einen bezug zum dataset hinbekommen soll.

schon mal vielen dank fürs lesen.
bin für jeden tip dankbar

20.02.2006 - 13:31 Uhr

Hi,

dieser vorgang soll per button ausgeführt werden d.h mehrmals täglich.

20.02.2006 - 10:15 Uhr

Guten morgen,

hat jemand eine gute idee wie wie ein dataset.table welches aus einer abfrage zu einer DB2 erstellt wurde in eine mysql tabelle einfügen kann?

18.01.2006 - 16:33 Uhr

die festen kannst du festlegen für die beweglichen google mal nach gauss formel
das sollte dir helfen.

17.01.2006 - 12:35 Uhr

wo sollen die daten denn herkommen?

16.01.2006 - 16:09 Uhr

und mal wieder dieser fehler neben dir haben glaub ich schon 5000000 andere leute das problem gehabt.

also ich gehe zunächst mal davon aus das du die anwendung über eine installationsroutine auf die clients installierst wenn nicht wird das sowie nicht funktionieren. ach ja und das dotnet framework sollte natürlich auch
installiert sein

aber ich gehe mal davon aus also stelle bitte sicher das du alle der folgenden schritte ausgeführt hast.

unter Projekt
- hinzufügen
- Mergemodul...

die folgenden dateien einfügen
Crystal_Database_Access2003.msm
Crystal_Database_Access2003_deu.msm
Crystal_Managed2003.msm
Crystal_Managed2003_deu.msm
Crystal_regwiz2003.msm

die dateine findest du unter
C:\Programme\Gemeinsame Dateien\Merge Modules

dann den schritt von vorhin mit der regwiz datei

und dann die keycodeV2.dll im Installationsprojekt in den Anwendungsordnerkopieren diese sollte unter
C:\Programme\Gemeinsame Dateien\Crystal Decisions\1.0\Bin liegen

dann sollte es funzen.

16.01.2006 - 14:17 Uhr

na klar mit crystal report viewer kannst du den report als pdf exportieren

16.01.2006 - 13:53 Uhr

na klar ist ganz einfach in deinem installer projekt
clickst du auf projektmappen explorer
dann rechte maustaste auf das mergemodul crystal_regwiz2003 wählst
eigenschaften aus und dann ganz oben bei mergemodulproperties auf das + klichen dann offnet sich das feld für den licence key

16.01.2006 - 13:28 Uhr

unter hilfe / info in visual studion findest du den licence key
den musst du dann nur unter mergemodul properties eintragen

16.01.2006 - 10:30 Uhr

das du auf anderen rechner mit crystal fehlermeldungen bekommst klingt ganz so als wenn dir da ein paar dll's fehlen das ist aber einfach zu lösen ich benutze auch crystal reports auf den clients.

12.01.2006 - 16:03 Uhr

hi ho.

was spricht den gegen odbc?

12.01.2006 - 14:40 Uhr

jo

JustinIO.zip

musst du runterladen

oder ist das das nicht was du suchst?

12.01.2006 - 14:30 Uhr

hier findest ud eine klasse geschrieben in c#
musst dir das zip file runterladen
http://www.aciss.com/justin/io.htm

12.01.2006 - 14:18 Uhr

hallo,

möchtest du daten senden oder empfangen?

12.01.2006 - 10:25 Uhr

wenn du denn pfad beim auslösen vorgeben kannst kann du nach dem initialisieren
doch einfach mit

myrpt.PrintToPrinter(1,true,1,1);

den bericht ausdrucken.

12.01.2006 - 09:59 Uhr

mmh also bei mir funktioniert das immer wunderbar allerdings gebe ich
bei dataset fill nicht nochmal das datatable an sondern nur das set
datatable ist meiner meinung nach nur bei reportsource zuweisung erforderlich

bsp. von mir

myDataSet1.Clear();

odbcDataAdapterProdqty.Fill(myDataSet1);

Produktionsmengen pm = new Produktionsmengen();

pm.SetDataSource(myDataSet1.RMRESR);

this.crystalReportViewer1.ReportSource = pm;

12.01.2006 - 09:27 Uhr

hi,
probier mal bei der zuzweisung der reportquelle anstatt nur das dataset auch das datatable mit anzugeben

ala

oRpt.SetDataSource(deindataset.deindatatable);
crystalReportViewer1.ReportSource = oRpt;

12.01.2006 - 09:20 Uhr

hi diana,

wie wählst du denn den cr aus den du drucken möchtest?

10.01.2006 - 21:03 Uhr

hi vitalinka

kuck dir mal deine assembly verweise an!!

19.12.2005 - 15:59 Uhr

erstmal vielen danke für deine antwort!

es gibt also keine möglichkeit die rep ohne setup auf einem client
zum laufen zukriegen?

19.12.2005 - 15:30 Uhr

hallo

ich habe in einer windows anwendung drei crystal reps

wenn ich die anwendung auf einem client starte

kriege ich eine exeption a la

file or assembly name chrystal.decisions.windows.forms or one of its
dependencies, was not found......

kann mir jemand helfen crystal reports auch auf einem client zum laufen zu bringen?

14.12.2005 - 13:31 Uhr

das dürfte eigendlich kein problem sein da brauchst du doch nur
in der entwurfsansicht von deinem bericht im detailbereich
am oberen un unteren rand linien einfügen und genauso machst du das auch
zwischen den feldern

dann sollte das funktionieren.

14.12.2005 - 13:11 Uhr

meinst du unter jedem datansatz eine trennlinie?

wie

überschrift

datensatz1


datensatz2


datensat3


....

oder was meinst du?

14.12.2005 - 11:32 Uhr

mmmh? nicht typisiertes dataset?

du musst eigentlich nur einen dataAdapter hinzufügen in diesem die sql anweisung
eingegen und dann im DESIGNMODUS rechte maustaste auf den adapter und dataset generieren anklicken dann wird die tabelle automatisch mit erstellt und ebenso die komplette klasse für das dataset

oder erstellst du die gesammte geschichte manuell ?

14.12.2005 - 09:34 Uhr

hi mike,

jetzt mal langsam, was ich meine ist einen dataadapter erstellen in dem deine
select anweisung die benötigten daten aus beiden tabellen abfragt.

das ergebnis dieser abfrage wird in ein dataset (datatable) eingefügt
sozusagen eine temporäre tabelle.

in der prozedur in der du dem report die datenquelle zuweißt musst du dann
vorher den select cmd ausführen, das dataset füllen und dann dieses als quelle
für den report angeben.

a la

//### Dataset füllen ###\
try
{
deinDataSet.Clear();

deinodbcDataAdapter.Fill(deinDataSet);
}

catch (Exception e)
{
MessageBox .Show(ex.ToString());
}

finally
{

}

// Daten in Bericht einfügen

deinrpt rpt = new deinrpt();
rpt.SetDataSource(deinDataSet.tabellenname);
this.crystalReportViewer1.ReportSource = rpt;

13.12.2005 - 15:45 Uhr

hi ho

es gibt im prinzip mehrere möglichkeiten, die beste meiner meinung nach
ist wiederum eine sql abfrage zu erstellen in der du beiden tabellen
verknüpftst, das ergebnis in dataset -> datatable speicherst
und wiederum dieses datatable dann als quelle für deinen report nimmst

13.12.2005 - 13:55 Uhr

was für tabellen liegen diese auf einer datenbank? wenn ja dann was für eine?

oder sind diese tabellen nur gecached also aus einer abfrage resultierend und somit bestandteil eines datasets?

13.12.2005 - 11:16 Uhr

hi hawk sorry hab gestern früh feierabend gemacht

falls du's noch nicht selbst rausbekommen hast:
du musst als datasource nich das dataset sondern die darin enthaltene datatable
eingeben.

bsp.

deinrpt rpt = new deinrpt();
rpt.SetDataSource(deindataset.deindatatable);
this.crystalReportViewer1.ReportSource = rpt;

12.12.2005 - 12:35 Uhr

danke für deine antwort

ich glaube hab das prinzip des zuweisen des wertes an die zweite klasse noch nicht so ganz aber ich frickel da noch mal dran rum

besten dank erstmal 🙂

12.12.2005 - 11:19 Uhr

hallo hawk

erstelle doch vorher eine parameterabfrage auf diese tabelle und schreibe das ergebnis in ein dataset welches du dann als quelle für deinen report nimmst.

12.12.2005 - 10:48 Uhr

hi george,

erstmal danke für die antwort!

mein problem ist aber das meine klassen für die die variable gelten soll
keine forms sind.

ich öffne zwar als einstieg ein fomular die einträge werden dann von anderer klasse abgeholt und dort zu einem connection string geformt in dieser klasse
wird dann auch mit dem string die verbindung geöffnet getestet und geschlossen

bsp.: hier wird der string gebildet.

namespace ProdRep_2
{
public class AS400_login
{
private string dsn = "";
private string uid = "";
private string pwd = "";
string connectionString = "";
private string errMsg = "";
private bool connected;

	public string theDsn  
	{  
		get  
		{  
		return dsn;  
		}  
		set  
		{  
		dsn = value;  
		}  
	}  

	public string theUid  
	{  
		get  
		{  
		return uid;  
		}  
		set  
		{  
		uid = value;  
		}  
	}  

	public string thePwd  
	{  
		get  
		{  
		return pwd;  
		}  
		set  
		{  
		pwd = value;  
		}  
	}  

	public AS400_login(string dsn, string uid, string pwd)  
	{  
		this.dsn = dsn;  
		this.uid = uid;  
		this.pwd = pwd;  

		getconnectionString();  

	}  

	public void buildConnectionString()  
	{  
		this.connectionString = &quot;DSN=&quot; + dsn + &quot;;UID=&quot; + uid + &quot;;PWD=&quot; + pwd;  

	}  

	public string getconnectionString()  
	{	  
		buildConnectionString();  
		return this.connectionString;  

	}  

und ich möchte jetzt aus einer anderen klasse this.connection string für eine neue
verbindung nutzen.

12.12.2005 - 10:19 Uhr

hallo

bin neu hier und habe ein problem den wert einer variablen aus einer anderen klasse abzurufen.

mein programm sieht bisher so aus das ich beim starten der anwendung ein anmeldefenster öffne bei dem uid und pwd eingegeben werden diese werden dann mittels einer klasse überprüft.
danach wird das main form geöffnet von dem aus ich verschiedene abfragen ausführen möchte dafür möchte ich aber den beim anmelde prozess gebildeten connection string wieder nutzen da der user sich nicht bei jeder aktion wieder an die DB anmelden soll.

kann mir jemand helfen.?