Laden...
D
DirkBorowski
myCSharp.de - Member
2
Themen
10
Beiträge
Letzte Aktivität
vor einem Jahr
Dabei seit
05.09.2023
Erstellt vor einem Jahr

... hier hab ich das DataGrid mit Bindings.

       <DataGrid x:Name="DGV01" Margin="10,10,10,70" AlternatingRowBackground="LightGray" AlternationCount="2" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding AUF_NR}" Width="60" Header="Proj.-Nr." />
                <DataGridTextColumn Binding="{Binding AUF_LIEFERTERMIN, StringFormat=\{0:dd.MM.yy\}}" Width="75" Header="Liefertermin" />
                <DataGridTextColumn Binding="{Binding AUF_PLAN_STUNDEN}" Width="80" Header="Planstunden">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="Background" Value="LightGreen"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding AUF_PLAN_STUNDEN}" Value="{x:Null}">
                                    <Setter Property="Background" Value="IndianRed"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
                </DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding AV.RP_NEED}" Width="60" Header="AV" />
                <DataGridTextColumn Binding="{Binding PROD.RP_NEED}" Width="60" Header="PROD" />
                <DataGridTextColumn Binding="{Binding MONT.RP_NEED}" Width="60" Header="MONT" />
                <!--<DataGridTextColumn Width="60" Header="AV" />
                <DataGridTextColumn Width="60" Header="PROD" />
                <DataGridTextColumn Width="60" Header="MONT" />-->
            </DataGrid.Columns>
        </DataGrid>

... hier ist der Aufruf.

private void Butdata_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                string ConString = ConfigurationManager.ConnectionStrings["ConScharlau"].ConnectionString;
                string CmdString = string.Empty;
                using (SqlConnection con = new SqlConnection(ConString))
                {
                    CmdString = "select " +
                                    "AUF_STAMM.AUF_NR, AUF_STAMM.AUF_LIEFERTERMIN, AUF_STAMM.AUF_PLAN_STUNDEN, " +
                                    "AV.RP_NEED, PROD.RP_NEED, MONT.RP_NEED " +
                                "from " +
                                    "PRO_STAMM inner join " +
                                    "AUF_STAMM on PRO_STAMM.PROJEKT_ID = AUF_STAMM.PROJEKT_ID left join " +
                                    "ADR_STAMM on AUF_STAMM.ADR_ID = ADR_STAMM.ADR_ID left join " +
                                    "RP_PROJECTS on RP_PROJECTS.AUF_ID = AUF_STAMM.AUF_ID left join " +
                                    "RP_PROJECT_DATA AV on AV.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and AV.RP_OPERATION = 'AV' left join " +
                                    "RP_PROJECT_DATA PROD on PROD.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and PROD.RP_OPERATION = 'PROD' left join " +
                                    "RP_PROJECT_DATA MONT on MONT.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and MONT.RP_OPERATION = 'MONT' " +
                                "where " +
                                    "PRO_STAMM.PRO_STATUS_ID = 1 and " +
                                    "PRO_STAMM.PRO_ART_ID = 1 and " +
                                    "AUF_STAMM.AUF_POS = '999' " +
                                "order by " +
                                    "AUF_POS ";


                    SqlCommand cmd = new SqlCommand(CmdString, con);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    DGV01.ItemsSource = dt.DefaultView;

                    
                    //int num=DGV01.Items.Count;

                    LB_DGV.Visibility = Visibility.Visible;
                    LB_DGVCount.Visibility = Visibility.Visible;
                    LB_DGVCount.Content = DGV01.Items.Count -1;

                }
            }
            catch (Exception)
            {
            }
        }

... oder was verstehe ich da nicht, was du meinst?

Erstellt vor einem Jahr

Die Spalten - Überschriften schreibe ich ja schon in der xaml, daher würde ich erwarten, dass das z.B. as AV nicht benötigt wird.

Aber selbst mit as AV etc. kommen die Werte für AV / PROD / MONT nicht?

Ich dachte, das die SQL - Abfrage an sich ziemlich / gleich lauten.

Was ist denn dann da falsch?

Erstellt vor einem Jahr

Hallo Zusammen,

jetzt habe ich doch noch ein Problem, im SQL Server Management Studio funktioniert das prima, nur leider nicht in meinem c# Programm.

SSMS:

select
		AUF_STAMM.AUF_NR as ProjNr, AUF_STAMM.AUF_LIEFERTERMIN as Liefertermin, AUF_STAMM.AUF_PLAN_STUNDEN as Planstunden,
		AV .RP_NEED as AV, PROD.RP_NEED as PROD, MONT.RP_NEED as MONT
from
		PRO_STAMM inner join
		AUF_STAMM on PRO_STAMM.PROJEKT_ID = AUF_STAMM.PROJEKT_ID left join
		ADR_STAMM on AUF_STAMM.ADR_ID = ADR_STAMM.ADR_ID left join
		RP_PROJECTS on RP_PROJECTS.AUF_ID = AUF_STAMM.AUF_ID left join
		RP_PROJECT_DATA AV on AV.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and AV.RP_OPERATION = 'AV' left join
		RP_PROJECT_DATA PROD on PROD.RP_PROJECT_ID  = RP_PROJECTS.RP_PROJECT_ID and PROD.RP_OPERATION = 'PROD' left join
		RP_PROJECT_DATA MONT on MONT.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and MONT.RP_OPERATION = 'MONT'
where
		PRO_STAMM.PRO_STATUS_ID = 1 and
		PRO_STAMM.PRO_ART_ID = 1 and
		AUF_STAMM.AUF_POS = '999'
order by
		AUF_POS

c#

                    CmdString = "select " +
                                    "AUF_STAMM.AUF_NR, AUF_STAMM.AUF_LIEFERTERMIN, AUF_STAMM.AUF_PLAN_STUNDEN, " +
                                    "AV.RP_NEED, PROD.RP_NEED, MONT.RP_NEED " +
                                "from " +
                                    "PRO_STAMM inner join " +
                                    "AUF_STAMM on PRO_STAMM.PROJEKT_ID = AUF_STAMM.PROJEKT_ID left join " +
                                    "ADR_STAMM on AUF_STAMM.ADR_ID = ADR_STAMM.ADR_ID left join " +
                                    "RP_PROJECTS on RP_PROJECTS.AUF_ID = AUF_STAMM.AUF_ID left join " +
                                    "RP_PROJECT_DATA AV on AV.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and AV.RP_OPERATION = 'AV' left join " +
                                    "RP_PROJECT_DATA PROD on PROD.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and PROD.RP_OPERATION = 'PROD' left join " +
                                    "RP_PROJECT_DATA MONT on MONT.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and MONT.RP_OPERATION = 'MONT' " +
                                "where " +
                                    "PRO_STAMM.PRO_STATUS_ID = 1 and " +
                                    "PRO_STAMM.PRO_ART_ID = 1 and " +
                                    "AUF_STAMM.AUF_POS = '999' " +
                                "order by " +
                                    "AUF_POS ";
       <DataGrid x:Name="DGV01" Margin="10,10,10,70" AlternatingRowBackground="LightGray" AlternationCount="2" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding AUF_NR}" Width="60" Header="Proj.-Nr." />
                <DataGridTextColumn Binding="{Binding AUF_LIEFERTERMIN, StringFormat=\{0:dd.MM.yy\}}" Width="75" Header="Liefertermin" />
                <DataGridTextColumn Binding="{Binding AUF_PLAN_STUNDEN}" Width="80" Header="Planstunden">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="Background" Value="LightGreen"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding AUF_PLAN_STUNDEN}" Value="{x:Null}">
                                    <Setter Property="Background" Value="IndianRed"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
                </DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding AV}" Width="60" Header="AV" />
                <DataGridTextColumn Binding="{Binding PROD}" Width="60" Header="PROD" />
                <DataGridTextColumn Binding="{Binding MONT}" Width="60" Header="MONT" />
             </DataGrid.Columns>
        </DataGrid>

Woran liegt das nun?

Besten Dank für weitere Hilfe.

Erstellt vor einem Jahr

Hallo Zusammen,

vielen Dank für die Infos.

@BlonderHans

So funktioniert es prima, danke.

select RP_PROJECTS.RP_PROJECT_ID as ID, AV.RP_NEED as AV, PROD.RP_NEED as PROD, MONT.RP_NEED as MONT
from RP_PROJECTS
left join RP_PROJECT_DATA AV on AV.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and AV.RP_OPERATION = 'AV'
left join RP_PROJECT_DATA PROD on PROD.RP_PROJECT_ID  = RP_PROJECTS.RP_PROJECT_ID and PROD.RP_OPERATION = 'PROD'
left join RP_PROJECT_DATA MONT on MONT.RP_PROJECT_ID = RP_PROJECTS.RP_PROJECT_ID and MONT.RP_OPERATION = 'MONT'
Erstellt vor einem Jahr

Hallo,

mein eigentliches Programm erstelle ich mit Visual Studio C#.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  
  <connectionStrings>
      <add connectionString="Data Source=XXXXX;Initial Catalog=XXXXX;User ID=XX;Password=XXXXX" name="ConXXX" />
  </connectionStrings>
  
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

Testen, wie ich an die unterschiedlichen Wert komme, mache ich im SQL Server Management Studio.

In der Tabelle RP_PROJECT_DATA gibt es eine Spalte RP_PROJECT_ID in der eine Projekt ID steht. Zu dieser Projekt ID gibt es dann jeweils 3 Zeilen. Unter der Spalte RP_OPERATION steht dann AV, PROD und MONT, Dazu gibt es dann in der Spalte RP_NEED jeweils einen Wert. Ich möchte nun diese 3 Zeilen in einer Zeile auslesen , siehe Bildanlage (Bild02).

... RP_NEED as AV,  RP_NEED as PROD, RP_NEED as MONT

Das bekomme ich einfach nicht hin.

Select	RP_NEED as AV, RP_NEED as PROD, RP_NEED as MONT
From	RP_PROJECT_DATA
Where	RP_OPERATION = 'AV' and 
		RP_OPERATION = 'PROD' and	
		RP_OPERATION = 'MONT'
Erstellt vor einem Jahr

Hallo Zusammen,

ich möchte gern aus einer SQL - Tabelle bestimmte Zeilen als String nach C# (Datagrid) ausgeben, habe aber keine Idee, wie ich diese Zeilen

AV

PROD

MONT

als String bekomme .... AV / PROD / MONT

select RP_PROJECT_ID, RP_REIHENFOLGE, RP_UNIQUE_ID, RP_OPERATION,RESOURCE_ID, RP_NEED
from RP_PROJECT_DATA

Für Hilfe wäre ich sehr dankbar.

Gruß

Dirk

Erstellt vor einem Jahr

... vielen Dank, werde ich die Tage testen, jetzt erst einmal einige Tage Urlaub.

Vielen Dank auch für die Infos und Links.

Beste Grüße Dirk

Erstellt vor einem Jahr

Hallo,

vielen Dank für die rasche Rückmeldung.

MySheets.Range["A3"].Offset[j, k].Value = DGV01.Items[j][k].ToString();

Hiermit bekomme ich aber eine Fehlermeldung.

Die Links schaue ich mir an.

Gruß

Dirk

Erstellt vor einem Jahr

Hallo,

vielen Dank für die rasche Rückmeldung.

MySheets.Range["A3"].Offset[j, k].Value = DGV01.Items[j][k].ToString();

Hiermit bekomme ich aber eine Fehlermeldung.

Die Links schaue ich mir an.

Gruß

Dirk

Erstellt vor einem Jahr

Hallo Zusammen,

ich beschäftige mich gerade mit C# / WPF / DataGrid und möchte den Inhalt des DataGrid nach Excel exportieren.

Das DataGrid befülle ich aus einer SQL - Datenbank.

Obwohl ich schon so einiges aus dem WWW ausprobiert habe, bekomme ich es nicht hin, das die Zeilen aus dem DataGrid nach Excel geschrieben werden.

Kann mir dabei jemand weiterhelfen, besten Dank?

        <DataGrid x:Name="DGV01" Margin="10,10,10,70" AlternatingRowBackground="LightGray" AlternationCount="2" AutoGenerateColumns="False">
            <DataGrid.Columns>
                  <DataGridTextColumn Binding="{Binding AUF_NR}" Width="60" Header="Proj.-Nr." />
                   <DataGridTextColumn Binding="{Binding AUF_LIEFERTERMIN, StringFormat=\{0:dd.MM.yy\}}" Width="75" Header="Liefertermin" />
              </DataGrid.Columns>
        </DataGrid>
     private void ButExcel_Click(object sender, RoutedEventArgs e) //, object Exceltabelle)
        {
            Excel.Application MyExcel = new Excel.Application();
            MyExcel.Visible = true;
            Workbook MyWorkbook = MyExcel.Workbooks.Add(System.Reflection.Missing.Value);
            Worksheet MySheets = (Worksheet)MyWorkbook.Sheets[1];
            MyWorkbook.Activate();

            //Header row
            for (int i = 0; i < DGV01.Columns.Count; i++)
            {
                MySheets.Range["A2"].Offset[0, i].Value = DGV01.Columns[i].Header;

            }

            //Rows
            for (int j = 0; j < DGV01.Items.Count; j++)
            {
                for (int k = 0; k < DGV01.Columns.Count; k++) 
                {
                    MySheets.Range["A3"].Offset[j, k].Value = DGV01.Items[j].ToString();
                    //MySheets.Range["A3"].Offset[j].Resize[1, k].Value = DGV01.Items[j].ToString();
                }
            }
        }