Autor |
Beitrag |
Steve31
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 16.11.10 16:49
Hi,
folgendes Problem... Ich habe eine WindowsForms Anwendung die mit einem SQL Server verbunden ist. Nun möchte ich die ProgressBar mit einem SQLQuery Statement verbinden, sprich das Ergebnis aus der Abfrage ist eine Zahl/Wert und dieser soll dann als PerformStep in der Progressbar wiedergegeben werden. Ich verzweifel gerade an der Umsetzung. Ich arbeite übrigens nach dem Model - View - Presenter Prinzip.
Wäre über lösungsansätze sehr glücklich.
mfg
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Di 16.11.10 19:53
Hallo und  im Forum!
Also, so ganz habe ich nicht verstanden, was Du genau erreichen willst.
Wenn ich SQL-Query im Zusammenhang mit einer ProgressBar höre denke ich, Du hast eine Abfrage, die längere Zeit dauert. Und Du willst den Fortschritt der Verarbeitung (auf den SQL-Server) in einer ProgressBar anzeigen.
Wenn ich richtig in der Annahme bin, kann ich nur sagen: das wird so nichts. Denn Du bekommst nur mit, dass der Server fertig ist, wenn Du das Ergebnis bekommst. Dazwischen hast Du keine Chance, den Status abzufragen.
Die einzigste Möglichkeit ist da, Deine Abfrage irgendwie zu splitten, dann weisst Du, wieviele Schritte nötig sind, und vieviele schon abgearbeitet wurden. Und danach kannst Du dann auch die ProgressBar füllen.
Marko
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 16.11.10 21:00
Also für mich liest sich das erstmal so wie es da steht:
In der Datenbank steht 60 und die ProgressBar soll dann 60 von 100 anzeigen.
Da stelle ich mir doch automatisch die Frage wo eigentlich das Problem liegt. Beim Herstellen der Datenbankverbindung, beim Auslesen des Wertes, beim Zuweisen an die ProgressBar, ...
Was ist denn jetzt die Frage? Du hast nur beschrieben was du gerne machen würdest, aber weder geschrieben was das Problem ist, noch Code gezeigt wo es nicht klappt noch eine Frage gestellt... 
|
|
Steve31 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 17.11.10 11:06
Genau das was jaenicke beschrieben hat ist mein Anliegen^^.
Ich habe soweit die Datenbankverbindung, der Wert wird auch ausgeben, nur das Problem mit dem Zuweisen an die ProgressBar an dem scheitert es. Ich will das die Bar den Wert darstellt sobald man auf einen Button klickt und dieser dieses Event auslöst.
Ich habe auch keinerlei Ahnung wie ich mit nem Code an die Sache rangehen soll. Ich will nun auch kein direkten Code haben ich will nur den Ansatz^^ Würde mich freuen =).
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 17.11.10 11:33
|
|
Steve31 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 17.11.10 11:42
Aber ich muss doch irgendwie ne Verbindung zwischen dem Wert der Abfrage und der Value herstellen =/
Und genau von diesem Code hab ich kein Plan.
Die Abfrage ist natürlich in nem anderen Code Teil meines Projektes als die Bar. Wie krieg ich das verbunden. Mh ich drück es wahrscheinlich noch zu ungenau aus^^
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 17.11.10 13:14
|
|
Steve31 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 17.11.10 13:58
public IList getTimeSheetProgressBarStatus(String GUIDEmployee, DateTime MonthDate)
{
session = null;
tran = null;
try
{
session = SessionFactoryClass.getSession();
tran = session.BeginTransaction();
//todo Abfrage über HQL verbessern
//Das Ergebnis der Abfrage ist eine Liste von allen Mitarbeiter die für diesen Auftrag Einträge in TimeSheet
//getätigt haben, für eine bestimmten Monat. Dabei werden die Tage mal dem % der ProgressBar Multipliziert.
IQuery query = session.CreateSQLQuery(" SELECT COUNT(*) * 3.3333"
+ " FROM (SELECT e.GUIDEmployee, t.Date, COUNT(*) AS TaskProTag"
+ " FROM dbo.Employee_Contract AS e INNER JOIN"
+ " dbo.TimeSheet AS t ON e.GUIDEmployee_Contract = t.GUIDEmployee_Contract"
+ " GROUP BY t.Date, e.GUIDEmployee) AS temp"
+ " WHERE (" + MonthDate.Month + " = MONTH(Date)) AND (" + MonthDate.Year + " = YEAR(Date))"
+ " AND GUIDEmployee = '" + GUIDEmployee + "'"
+ " GROUP BY MONTH(Date)");
tran.Commit();
return query.List();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (session != null && session.IsConnected)
session.Close();
}
}
Das wäre meine SQL Abfrage im Projekt... Sie gibt den Wert genau aus sprich die Zahl die ich gerne im Value hätte, wenn ich das btn klick event auslöse...
Im btnklick event steht noch nicht allzuviel drin^^
private void buttonProgressBar_Click(object sender, EventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
}
Hoffe er zeigt den C# Code verborgen an und spammt nicht alles hier dicht xD...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 17.11.10 14:08
Steve31 hat folgendes geschrieben : |
Das wäre meine SQL Abfrage im Projekt... Sie gibt den Wert genau aus sprich die Zahl die ich gerne im Value hätte, wenn ich das btn klick event auslöse... |
Dann ruf die Funktion doch einfach auf.
|
|