Man sollte Grundsätzlich zugriffe auf die Userordner Vermeiden. Da es je nach Berechtigungs Vergabe eben Probleme gibt.
Ich lege mir für sollche Testzwecke auf meinem Entwickler Rechner in C:\ ein Temp Verzeichniss an wo ich solche Sachen kurz Testen kann.
Für "richtige" Tests (unittest etc.) is allerdings der weg über zb. Das Projektverzechniss der passendere Weg, da dort auch ein Buildserver die Daten findet.
Wenn es wirklich im Userverzeichniss sein muss. Dann ist der weg wie es Th69 schreibt der Passende.
Moin,
Weisst du was in Zeile 14 von deinem Code Passiert?
Wenn ja dann Sagt die Fehlermeldung dir doch warum es da knallt!
Wenn nicht. Würde ich nochmal in deinem Kurs nach zugriff auf Dateien und Ordner suchen. Speziell nach dem Punkt zugriffsberechtigungen. Alternativ suchmal bei google ob man auf das Userverzeichnis so ohne Weiteres zugreifen kann.
Ja perfekt das wars. Hab das trotz Google nicht gefunden...
Vielen dank!
Hallöchen,
wie kann man com-Objekte bzw. com-Components testen?
Ich nutzte als Testframworke NUnit. Sollange ich "normale" Tests schreibe ist alles Super aber wenn ich versuche die Methoden zu testen die auf ein IBM com-objekt zugreifen bekomme ich eine Fehlermeldung.
Fehlermeldung:
Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "AutConnMgrTypeLibrary.AutConnMgr" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{4E084A81-8FE7-11D0-9125-0004AC3617E1}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).
Ich kann das comobjekt in eine Winforms Anwendung mit [STAThread] an der main Methode aufrufe. Dann funktioniert der com aufrufe auch. Allerdings habe ich nicht wirklich lust das ganze über winforms zu testen....
WinScp. kann Sowohl Local als auch remote mit FTP Syncen. Und du kannst das ganze auch mit .net nutzen.
Und natürlich gibt es seit dem ersten Tag des Bestehens von ASP.NET bewährte Ansätze und grundlegende Empfehlungen und Umsetzungsmöglichkeiten für so ein absolutes Basis-Problem, wie man es ordentlich löst.
Aber dafür müsste man natürlich die offizielle Dokumentation einfach mal lesen....
Da hast du natürlich Recht.
Somal das Problem bei einer Ordentlichen Trennung von UI und Logik auch zügig zu lösen ist ohne das man ein gefummel mit irgendwelchen Proxys oder anderen Klimmzügen machen muss.
Moin,
ob es da Etwas gibt was die Strings im Response ersetzt weis ich nicht. Allerdings stellt sich mir eher die Frage ob das überhaupt der beste Lösungsansatz ist. Da ja sowieso eine Übersetzung der Wörter Stattfinden muss und dann eine Art "Wörterbuch" geschrieben werden muss was die Übersetzung beinhaltet. Und einfach z. B. googletranslate dahinter stecken und sagen übersetzte mir alles was auf der Seite zu finden ist geht nur in die Hose (und kann eben google auch selber).
Und dann eine Art Proxy dahinterbauen + das Wörterbuch dazu schreiben und die Wortersetzung zumachen klingt mir nach zuviel Aufwand für ein zu schlechten Ergebnis. Ich würde das Richtig Lokalisieren was definitiv Professioneller ist, und die Gefahr einer Falschen Maschineller Übersetzung minimiert.
Grüße
Cokie
verwendetes Datenbanksystem: MSSql
Servus,
gibt eine Möglichkeit dem EF zusagen das es die DB Server zeit nehmen soll wenn man Daten Einfügt?
Ich weiß das man sich die Zeit vom Server holen kann und das dann in Model einträgt. Aber besonders schön finde ich das dann nicht da es dort immer noch die Möglichkeit der Manipulation gibt.
Vielen Dank
Cokie
Ja ich verwende Codefirst.
Ich habe das jetzt auf folgendes geändert.
Kunde.kundendetails = dbcontext.Kundendetails.First(x => x.Id == 2);
dbcontext.Entry(Kunde).State = System.Data.Entity.EntityState.Modified;
dbcontext.Save();
Die Fehlermeldung ist jetzt weg. Auch das dbcontext.Save(); läuft durch allerdings wird der wert nicht in der DB gespeichert. Wenn ich den Name z.b. ändere wird das allerdings schon gespeichert.
Oder hab ich jetzt was Total falsch verstanden?
verwendetes Datenbanksystem: <MSSQL>
Nabend,
ich verstehe momentan etwas nicht.
Und zwar, ich habe 2 Entitys einmal Kunde und Kundendetails.
Die Tabelle Kunden hat den Fremdschlüssel für Kundendetails. Die Tabelle Kunden muss KEINE Kundendetails haben. Soll aber wenn es benötigen wird mit einem Eintrag aus der Kundendetails Tabelle Verknüpft werden.
Leider bekomme ich das nicht hin.
Wenn ich zb. Schreibe:
Tabelle Kunden
public int ID {get; set;}
public string Name { get; set; }
public string Vorname { get; set; }
public virtual Kundendetails kundendetails{get; set;}
Kundendetails Tabelle
public int ID {get; set;}
public string Geburtsdatum{ get; set; }
etc....
Kunde.kundendetails = 2; //2 ID aus Kundendetails
dbcontext.Entry(Kunde).State = System.Data.Entity.EntityState.Modified;
dbcontext.Save();
Bekomme ich die Fehlermeldung das die ID nicht geändert werden darf.
Wie kann ich jetzt aber der Entity(tabelle) Kunde die Kundendetails beibringen?
Vielen dank
Cokie
Den PredicateBuilder hatte ich auch schon gesehen. Finde ich aber auch nicht SO toll.
Zu A. meinst du die Komma Suche? Die verwendet ein Groß Software Anbieter von uns in seiner Suche auch. Und man kommt damit prima zurecht 😃
zu b und c. Das ist eine Test Geschichte womit ich gerade rumprobiere der Produktive Teile sieht dann anders aus 😉.
verwendetes Datenbanksystem: <MSSQL>
Nabend,
ich stehe momentan auf dem schlauch.
Ich habe ein kleines Webprojekt wo ich eine Suche Implementieren möchte.
Das ganze DB zeugs mache ich über EF.
Jetzt stoße ich aber an ein Problem beim EF bzw. eher beim Linq was die Suche in der Datenbank betrifft.
Folgendes Bsp.
Tabelle
ID | Name | Vorname | Strasse usw...
1 Max Mustermann Musterstrasse
2 Maxi Mustermann Musterstrasse
3 Muxi Musterfrau Strassenmuster
usw...
wenn ich jetzt per Linq die sache abfrage.
public IQueryable<ConsumerModel> SearchResult(string searchString)
{
///Macht mir die Komma trennung für die einzelnen Suchparameter
var Splitarray = searchString.Split(',');
IQueryable<ConsumerModel> search = null;
//string tmp = Splitarray[1];
switch (Splitarray.Count())
{
case 0:
search = from k in Dbcontext.Consumermodel select k;
break;
case 1:
search = from k in Dbcontext.Consumermodel where k.Name.Contains(Splitarray.FirstOrDefault()) select k;
break;
case 2:
search = from k in Dbcontext.Consumermodel where k.Name.Contains(Splitarray.FirstOrDefault()) && k.Name.Contains(Splitarray.OrderBy(x => x).Skip(1).FirstOrDefault()) select k;
break;
default:
search = from k in Dbcontext.Consumermodel select k;
break;
}
return search;
}
funktioniert das ganze auch.
Jetzt das große Aber.
Die Suche ist so gestaltet das man per Komma in der Textbox die Suchspalten ändern kann.
Also Max,Mustermann würde dann in der DB unter Vor- und Nachnamen spalten gesucht werden.
Wenn man jetzt z.B. ,Mustermann in die Textbox eingeben würde(ohne den Vornamen z.B.) bekomme ich kein Ergebnis da ja die Suchparameter nicht mehr vollständig ist.
Ich kann natürlich für jede erdenkliche Kombination eine eigene Linq Suchabfrage erstellen. Aber das wäre mir persönlich Zuviel aufwand, und zu fehleranfällig das man was vergisst.
Ich kann das ganze über das Sqlquery von dbcontext lösen da baue ich mir die Sqlbefehle zusammen allerdings hab ich ja dann nix mehr von EF 😉
Wie macht ihr den sowas wenn der Benutzer die Suchparameter selber "einstellen" kann und ihr das Linq to EF benutzt.
Japp hatte ich schon gemacht. Da ich allerdings nicht weis ob dort ggf. noch nuget pakete etc. Runtergeladen werden bzw. die Datenbank Tabellen ja erstellt werden hatte ich das wieder verworfen.
Danke für die Antworten
Hallöchen,
ich Bastel gerade etwas rum.
Ich habe eine kleine MVC 5 Web App geschrieben. Die ich nachträglich gerne mit einem Login System ausrüsten möchte. Heißt ich hab beim erstellen des Projekt keine Authentifizierung angeklickt. Das möchte ich jetzt nachholen. Wie mach ich das?
Bei Onkel google hab ich nichts wirklich brauchbares gefunden.
Vielen Dank
Cokie
Die Sache Sessions..
.. wenn Du an sowas denkst, dann sind das i.d.R. Denkfehler.
Eine Webanwendung kann immer mit mehreren Browserfenstern geöffnet werden. Verwendest Du hier blind Sessions haust Du Dir den Applikationsram voll, wirst Seiteneffekte haben etc etc.
Lass es, wenn Du es nicht bewusst verwendest und denke bei Webanwendungen viel abstrakter.
Sorry für den Doppelpost.
Bin gerade dran das System aufs ViewModel umzustellen.
Jetzt hab ich allerdings noch ein Verständnis Problem bezogen auf die Sessions.
Wie kann ich dann die Daten die der User im ersten Schritt machen "zwischen" Speichern damit ich im Schritt 2 und 3 z.B. noch weiter Daten zu dem Datensatz Hinzufügen kann.
Die Klassen sind ja nach dem Seitenaufbau "weg" wie kann ich dann ohne der Session die daten mir fürs Finale Speichern in der Datenbank zurecht bauen.
Ich Dachte eigentlich die Session sollte genau für Sowas da sein. Hab mit Web halt noch ne soviel gemacht.
Danke Sehr.
Das gibt mir schonmal die Richtige Richtung zum Denken.
Fand das mit dem if in der View etc. ebnso nich besonder geschickt, da ich ja eben solche Konstrukte Vermeiden wollte. Das mit dem Viewmodel lösst ja das Problem!
Guten abend,
Ich habe folgendes Problem.
Wie kann ich unterschiedliche Parameter in einem ActionLink "Rendern"?
Als Bsp.
Es Exsitiert ein Controller Names "Bericht". Der Controller hat eine Actionmethode Create die Rendert eine View wo z.B. Ein Kunde Ausgewählt werden soll. In der Create View gibts es also einen Link der zu dem Controller Kunden Weisst und dort auf die Actionmethode "Search". Die Actionmethode Rendert Die View Serach.
Die Serach Methode kann allerdings aus aus einem Menü aufgerufen werden.
In der Search Methode soll wenn Sie z.B. Aus dem Berichtscontroller bzw. Aus der dazugehörigen Actionmethode aufgerufen wird ein ActionLink erstellt werden der mit einer Kunden ID wieder zurück auf die Berichts View/Methode Zeigt und dort der Kunde zum Bericht hinzugefügt werden kann.
Sollange wie man das auf einen Berichtscontroller beschränk lässt sich das auch noch "einfach" lösen. Wie mach ich das wenn ich das System bei mehreren Controllern benötige.
Ich habe schon mit Sessions etc. probiert aber das scheint mir nicht sinnvoll da der Verwaltungsaufwand extrem Seigt. Und mit Viewbag etc. ist das auch ein Riesen aufwand.
Hier mal etwas Code womits etwas besser zu Verstehen wird.
Berichts Create Methode
public ActionResult CreateStepOne(int? Kundennummer)
{
BerichtModel BM = new BerichtModel();
if (Kundennummer != null)
{
var result = db.Kundenmodel.Where(x => x.ID == Kundennummer);
foreach (var item in result)
{
BM.Kundenmodel = item;
}
}
Session.Add("Bericht", BM);
return View(BM);
}
Berichts View
@model Berichtsmodel
@{
ViewBag.Title = "CreateStepOne";
Layout = "~/Views/shared/_LayoutPage1.cshtml";
}
<h2>Erster Schritt Kunde Auswählen</h2>
<div class="Bericht_Create_Zusatz_daten">
@Html.ActionLink("Kunde Suchen", "Search", "Kunden", new { Uebernehmen = true }, null)
<ul>
<li><label for="Kundenmodel_Name">Name</label>@Html.TextBoxFor(K => K.Kundenmodel.Name, new { name = "Kunden_Name", @readonly="readonly" })</li>
<li><label for="Kundenmodel_Vorname">Vorname</label>@Html.TextBoxFor(K => K.Kundenmodel.Vorname, new { name = "Strasse", @readonly = "readonly" })</li>
<li><label for="Kundenmodel_Ort">Ort</label>@Html.TextBoxFor(K => K.Kundenmodel.Ort, new { name = "Ort", @readonly = "readonly" })</li>
<li><label for="Kundenmodel_PLZ">Postleitzahl</label>@Html.TextBoxFor(K => K.Kundenmodel.Postleitzahl, new { name = "Postleitzahl", @readonly = "readonly" })</li>
</ul>
</div>
@using (Html.BeginForm("CreateStepTwo", "Bericht", FormMethod.Get))
{
<input type="submit" name="name" />
}
Kunden Controller
[HttpPost]
public ActionResult Search(string SearchString, string Uebernehmen)
{
IQueryable<KundenModel> search = from K in db.Kundenmodel where K.Name == SearchString select K;
if (Uebernehmen != null || Uebernehmen == "true")
{
ViewBag.Uebernehmen = true;
}
//var search = from d in db.Kundenmodel where d.Name == Test select d;
if (search == null)
{
return Search(Uebernehmen);
}
return View(search);
}
Kunde Search View
@model IEnumerable<KundenModel>
@{
ViewBag.Title = "Search";
Layout = "~/Views/shared/_LayoutPage1.cshtml";
}
<p>
@Html.ActionLink("Neuen Kunden Anlegen", "Create")
</p>
<div>
Suchen:
@using (Html.BeginForm())
{
@Html.Editor("SearchString");
<input type="submit" name="SearchString" value="Suchen" />
if (ViewBag.Uebernehmen != null || ViewBag.Uebernehmen == true)
{
<input type="hidden" name="Uebernehmen" value="true" /> }
}
</div>
<hr style="margin-top:2em; margin-bottom:2em;" />
@if (Model != null)
{
int modelcount = Model.Count();
if (modelcount == 0)
{
<span>Leider keinen Kunden gefunden</span>
return;
}
<table class="Kunden_Search_Result_Table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Vorname)
</th>
<th>
@Html.DisplayNameFor(model => model.Geburtsdatum)
</th>
<th>
@Html.DisplayNameFor(model => model.Geschlecht)
</th>
<th>
@Html.DisplayNameFor(model => model.Strasse)
</th>
<th>
@Html.DisplayNameFor(model => model.Ort)
</th>
<th>
@Html.DisplayNameFor(model => model.Postleitzahl)
</th>
<th>
@Html.DisplayNameFor(model => model.Telefon1)
</th>
<th>
@Html.DisplayNameFor(model => model.Handy)
</th>
<th>Daten</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Vorname)
</td>
<td>
@Html.DisplayFor(modelItem => item.Geburtsdatum)
</td>
<td>
@Html.DisplayFor(modelItem => item.Geschlecht)
</td>
<td>
@Html.DisplayFor(modelItem => item.Strasse)
</td>
<td>
@Html.DisplayFor(modelItem => item.Ort)
</td>
<td>
@Html.DisplayFor(modelItem => item.Postleitzahl)
</td>
<td>
@Html.DisplayFor(modelItem => item.Telefon1)
</td>
<td>
@Html.DisplayFor(modelItem => item.Handy)
</td>
<td>
@Html.ActionLink("Bearbeiten", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Löschen", "Delete", new { id = item.ID })
</td>
@*Und Hier ist das Problem wie kann ich das Dynmaische oder besser machen *@
@if (Request.Params["Uebernehmen"] != null)
{
<td>
@Html.ActionLink("Übernehmen", "CreateStepOne", "Bericht", new { Kundennummer = item.ID }, null)
</td>
}
</tr>
}
</table>
}
Den Online TFS nutzten wir schon. Hatten halt nur denn Gedanken das jeder "sein" Projekt anlegt und Pflegt. Wenn das aber mit einem Projekt im TFS besser funktioniert. Mergen wir die Sache zusammen.
Vielen dank für die Hilfe!
Hallöchen,
ich hab da eine kleine Frage die mir gerade Kopfzerbrechen bereitet.
Ich hab eine kleines Web Projekt was ich mit eine Freund zusammen schreibe.
Allerdings hab ich bei der Planung von dem Projekt ein kleines Problem bzw. finde mich da noch nicht so richtig rein.
Wir haben uns soweit abgesprochen das jeder ein Teil der Anwendung schreibt. Er macht in einem Projekt einen Teil der Anwendung und ich mache in einem Anderem Projekt einen Teil der Anwendung. Wir hab haben uns Darauf geeinigt das dass Projekt ingesamt mit MVC umgesetzt wird.
So Lange Rede kurzer sinn. Wenn ich jetzt die beiden Projekt Teile zusammen bringen will in einer "Core" Anwendung wie mache ich das jetzt am besten.
Ich kann ja schlecht von denn beiden Projekten die Controller von der Core Anwendung ansprechen lassen.
Wie kann ich die Beiden Projekte also Sinnvoll Vereinen. Oder haben wir das ganze schon vollkommen falsch angefangen.
Also das man Datasets vermeiden sollte halte ich auch für ein Gerücht. Es kommt halt wie so vieles auf denn Einsatz Zweck an.
Grundsätzlich ist es ja so das das ADO.net ja "verbindungslos" arbeitet. Also es wird nur eine kurze Verbindung zu DB aufgebaut (ob Local oder irgendwo im Netz ist egal) Die Daten gelesen und dann wird die Verbindung wieder geschlossen. Die Gelesenen Daten bleiben dann in einem Object was man zum einlesen verwendet hab. Ob das jetzt nun ein "richtiges" object von EF ist eine Datatable/bzw. Dataset oder ein selbst geschriebene Klasse, ist da erstmal wurscht.
Es mag ja richtig sein das bei einem Speziellen Einsatz Zweck einen Eigene Container klasse die Performanter ist. Aber für kleine bis mittlere Projekte Reicht Normalerweise das Dataset bzw die beinhaltende DataTable dicke aus.
Ich baue mir für die meisten DB Projekte eine DB-Core basis klasse die die Grundlegenden Arbeiten macht und wird dann im Data Access Layer(DAL) geerbt und ggf. die Methoden überschrieben.
Die DAL Methoden erwarten dann ein jeweiliges Container Object die dann die Daten aufnimmt. Das sind meistens DataTables, bei Relationen sinds dann DataSet oder je nach dem Eigene Container, je nach einsatz Zweck halt.
Mh,
ok das mit dem Event Aggregator hatte ich schon gesehen. Schau ich mir nochmal genauer an.
Jetzt stellt sich mir die Frage. Wie soll man denn dann über das MEF Plugin System, die Anwendung benachrichtigen das sich was im Plugin geändert hat. wenn Events da nich so optimal sind. Das Event Aggregator schein ja eher ein WPF Konstrukt zu sein, und hat nichts direkt mit dem MEF zu tun, ist also eher eine "Notlösung".
Also,
ich erkläre mal Genauer.
Ich hab eine Plugin klasse mit den Interfaces:
public class Host
{
public interface ISMSVersandErfolgreichEventArgs
{
bool VersandErfolgreich { get; set; }
}
public interface ISMSVerschicken
{
bool Senden(string SMSText, string Telefonnummer);
void Form();
void Form(string HandyNummer, string SMSText);
void EinstellungsForm();
event EventHandler<ISMSVersandErfolgreichEventArgs> SendenErfolgreich;
}
}
Eine Klasse soll das Interface Implementieren.
[Export(typeof(PluginSystem.Host.ISMSVerschicken))]
class PluginInterface : PluginSystem.Host.ISMSVerschicken
Wenn ich den VS Magie Kasten greife und per Automagisch Generierung die denn Rumpf mit zusammen bauen lasse bekommen ich folgendes.
event EventHandler<PluginSystem.Host.ISMSVersandErfolgreichEventArgs> PluginSystem.Host.ISMSVerschicken.SendenErfolgreich
{
add { throw new NotImplementedException(); }
remove { throw new NotImplementedException(); }
}
Und da hörts bei mir auf. Ich weis das is Grundlage. Ich hab schon die MSDN durchforstet usw. Aber geholfen hat mir das Beispiel dort auch nich.
Ein "normal" Event Implementieren is kein Problem. Das bekomm ich hin. Aber über die Schnittstelle geht das in die Hose.
Deshalb wäre es Nett wenn mir das jemand erklären kann. Wie ich das Event mit dem Generischen Eventhandler aufgerufen/ausgelöst bekomme.
Jo danke,
allerdings scheint das nich mehr ganz aktuell zu sein.
Gibts eine bessere Möglichkeit Events über MEF rauszubringen?
Guten Nabend,
ich habe ein kleines Problem mit MEF und Events. Kurz gesagt ich bekomme einfach keine Events durch das MEF durch. Ich hab auch schon Google bemüht und bin dort auf EventAggregator gestossen. Nur fehlt mir da Anscheinend das Verständnis wie man die einbinden soll. Hat jemand ne Seite die Das erklärt oder einen Tipp.
MFG
Cokie
Ich danke dir.
Hat geklappt 😃
MFG
Cokie
verwendetes Datenbanksystem: Sqlite
Servus,
ich steh gerade auf Schlauch.
Ich habe Tabelle Mit Artikel.
Die Tabelle sieht gekrützte so aus
Artikel 1 5 buy
Artikel 2 7 buy
Artikel 3 3 buy
Artikel 2 2 sell
Artikel 1 1 buy
usw.
So jetzt möcht ich gerne von Denn Artikeln die Gekaufte menge von der Verkauften menge Abziehen per SQL. Allerdings bekomm ich das nicht hin. Bastel da schon seit 3 Tagen dran rum....
Big Thx.
Das hab ich nich gefunden. Hab immer nach Sqlite gesucht XD
Danke für die antwort.
Ich dachte das der Dataadapter das Automatisch ein ein Transaction packt.
Jetzt Frag ich mich allerdings wie ich das Datatable in die Transaction bekomme.
MFG
Cokie
verwendetes Datenbanksystem: Sqlite
Hallo,
ich hab das Problem das das Schreiben von denn Daten in Sqllite DB Extrem langsam ist.
Genauere Erklärung.
Ich hab ein Quelle wo ca. 100 Datensätze kommen. Die lese ich in eine DataTable ein und Lass die DataTable Per Sqlite.DataAdapter in die SqlDB Schreiben. Wenn ich das ganze als "normale" Sqlite DB Datei mache ist das Extrem langsam. Im Task Manager ist auch die auslastung der Festplatte bei 100% schreibt aber nur 1-2 KB die Sekunde.
Wenn ich das ganze aber erst als "Memory" Sqlite DB mache und dann das Ganze als Backup auf die Festplatte schreibe geht das ganze recht fix (so 2-3 Sekunden).
SqllCom.CommandText = "Insert INTO ArtikelStamm(typeID,typenName, AnlageDatum) Values" + Environment.NewLine
+ "(@typeID, @typeName, CURRENT_TIMESTAMP)";
SqllCom.Prepare();
SqllCom.Parameters.Add("@typeID", DbType.Int32, -1, "typeID");
SqllCom.Parameters.Add("@typeName", DbType.String, -1, "typeName");
SQLiteDataAdapter SQLDA = new SQLiteDataAdapter();
SQLDA.InsertCommand = SqllCom;
SQLDA.Update(DT);
DT ist wie gesagt schon aus einer anderen Quelle Gefüllt und hat so Ca. 100-150 datensätze.
Jemand eine Idee wie ich das Ganze schneller machen kann ohne erst einen Memory DB zu erstellen und die dann per Backup einzuspielen.
MFG
Cokie
Hallo Cokie,
meinst du
SELECT lg.* FROM Leihgerät lg LEFT JOIN Leihrelation lr ON la.id = lr.fk LEFT JOIN Leihauftrag la ON la.id = lr.fk WHERE la.zurückam < GETDATE()
?
Soweit klappt das auch.
Das problem ist ja, das ich auch ein Art "vorerfassung" brauch. Bsp.
Leihgerät:
Nokia Telefon
So Kunde A möchte gerne am 2.6.2013 das Nokia leihen. Heist ich schreib in denn leihauftrag in Spalte "Verliehenam" 2.6.2013 und die Spalte "zurückam" bleibt Null.
Jetzt möchte Kunde B das Nokia am 23.5.2013 Leihen. Das ist möglich weil das Nokia erst am 2.6 an Kunden A Verliehen wird. Das heist das Nokia muss bis zum 2.6 Sichtbar sein. Damit ich Kunden B das Nokia auch verleihen kann (Vorrausetztung ist natrülich das Kunde B am 1.6. das Nokia wieder zurückbringt).
Und da hab ich das Problem ich bekomm das nicht hin das wenn der Auftrag drin steht das Gerät in dem Zeitraum sichtbar bleibt bis das Gerät tatsächlich Verliehen ist.
verwendetes Datenbanksystem: <MSSQL>
Hallo,
ich hab ein kleines Problem wo ich schon seit einer ganzen Zeit drüber grübel.
Ich habe 3 Tabellen
Einmal Leihgerät. Einmal Leihrelation und einmal Leihauftrag.
Über die Leihrelation wird der Leihauftrag mit dem Leihgerät verknüpft.
In der Leihauftrag Tabelle gibt es u.a. die Spalten Verliehenam und zurückam.
Jetzt möchte ich das Alle Geräte angzeigt werden die verfügbar sind.
Allerdings bekomm ich das nicht hin. Hab ihr eine Idee???
Ne bin direkt in der Tabelle drin. Gibt leider keine Postennummer oder ähnliches. Find das selbst ja auch sehr grusslich. Da ja selbst eine Sortierung schon probleme mit sich bringt. Und das rum "orakeln" auch so eine sache ist....
Also muss ich das ganze doch im Programm selber lösen.
Trotzdem danke für die Hilfe
verwendetes Datenbanksystem: MS-SQL
Hallo,
ich hab folgendes Problem und hoffe ihr könnt mir helfen.
Eins vorweg die DB ist nicht von mir. Deshalb kann ich an der DB Selbst nichts ändern, und nur auslesen!
In der DB sind die Tabellen Artikel, Verkauf, Verkaufseriennummer.
Die Artikel Tabelle hat u.a. eine Spalte mit Artikelnr. , Fabrikat, Arikelbezeichnung.
Die Verkaufs Tabelle hat eine u.a. die Spalten Artikelnr. und Rechnungssnummer
Und die Tabelle Verkaufsseriennummer hat die Spalten Seriennumer, Rechnungssnummer, NR .
Ich kann jetzt über Joins eine Verbindung mit dem Artikel und dem Verkauf feststellen. Jetzt brauch ich aber auch noch die Seriennummer.
Die Seriennummer wird ja in der Tabelle Verkaufseriennummer gespeichert.
Die Seriennummer wird über spalte NR. einem Artikel zugeordnet. Wie kann ich aber das in der Abfrage Formulieren?
Bsp.:
Tabelle Artikel:
++Artnr | Fabrikat | ARTBEZ ++
7138338 Bosch MFQ3540 Handmixer
7173487 Panasonic TX L 37 ETW 5 Neo 3D
Tabelle Verkauf:
Rechnungsnr. | Artikelnr.
1234569 7138338
1234569 7173487
Tabelle Seriennr. :
Rechungsnr. | Nr. | Seriennr.
41608890 2 ABCDF12345
So bei einem Normalen Join über die 3 Tabellen werden beiden Artikel die Seriennr. zugeordnet.
Das ist aber aber Falsch da in dem Bsp. nur dem 2 Artikel auf der Rechnung die Seriennr. gehört. Die Zuordung der Seriennr zum Artikel wir über spalte Nr. in der Seriennr. Tabelle gemacht.
Wie muss ich da jetzt die Select abfrage machen das ich die Artikel mit der zugehörigen seriennr. bekomme.
Danke