[gelöst] Probleme mit QueryExpression

27. Mai 2015 09:45

Hallo zusammen,

hatte gehofft den Fehler selbst zu finden, aber ich habe alles mögliche ausprobiert und bin mit meinem Latein am Ende. Vielleicht seht ihr was ich nicht sehe sprich was ich da schon wieder falsch mache. Wenn ich in meinem Plugin eine Beispiel QueryExpression aus dem sdk abfeuere bekomme ich ein Ergebnis zurück -> Prima
Das ist die Abfrage aus dem SDK:
Code:
query = new QueryExpression()
                            {
                                EntityName = SalesOrder.EntityLogicalName,
                                ColumnSet = new ColumnSet("name"),
                                Criteria =
                                {
                                    Conditions =
                                        {
                                             new ConditionExpression ("datefulfilled", ConditionOperator.LastFiscalPeriod)
                                        }
                                }
                            };


Nun möchte ich aber aus einer eigenen Entität Werte auslesen und zwar aus der Entität OPD_gutschrift. Wenn ich diese Abfrage abfeuere dauert es ewig und dann kommt ein Timeout. dachte erst es liegt vielleicht an groß oder Kleinbuchstaben weil der Schemaname der Variable OPD_gutschrift_zaehler ist und der Attributname opd_gutschrift_zaehler. Aber wenn ich den Schemanamen verwende dann kommt die Meldung dieses Attribut gäbe es für die Entität OPD_gutschrift nicht. Also ist opd_gutschrift_zaehler richtig liefert mir aber leider immer noch den Timeout.

Code:
query = new QueryExpression()
                            {
                                EntityName = OPD_gutschrift.EntityLogicalName,
                                ColumnSet = new ColumnSet(true),
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression ("opd_gutschrift_zaehler", ConditionOperator.NotNull)
                                    }
                                }
                            };


Auch wenn ich es über eine Systemvariable der Entität versuche bekomme ich einen Timeout:

Code:
query = new QueryExpression()
                            {
                                EntityName = OPD_gutschrift.EntityLogicalName,
                                ColumnSet = new ColumnSet(true),
                                Criteria =
                                {
                                    Conditions =
                                    {
                                        new ConditionExpression ("statuscode", ConditionOperator.Equal, 1)
                                    }
                                }
                            };


daher denke ich ich mache hier irgendwas grundlegend falsch auch wenn ich nach prüfen des sdk der Meinung bin die Abfrage eigentlich richtig erstellt zu haben. :(

Ich lass mir im Moment auch nur alle Spalten zurückgeben weil ich die Abfrage so einfach wie möglich halten wollte bis sie überhaupt mal funktioniert. eigentlich will ich nur das Feld opd_gutschein_zaehler in Absteigender sortierreihenfolge zurück bekommen am besten sogar nur den ersten Wert der bei dieser Reihenfolge erscheinen würde. Aber da das gleich was komplizierter wäre mit Orders und Page dachte ich mir ich mach zunächst was einfaches aber schon das geht nicht :cry:

Bin über Hilfe wie immer dankbar.

Viele Grüße
Nicole
Zuletzt geändert von Nicole Schmitz am 27. Mai 2015 11:09, insgesamt 1-mal geändert.

Re: Probleme mit QueryExpression

27. Mai 2015 10:41

Habe es jetzt nochmal ganz simpel versucht um der Sache vielleicht was näher zu kommen aber es macht mich noch wahnsinniger weil ich noch weniger verstehe warum meine Abfrage nicht geht.
Zuerst habe ich diese versucht und auch Einträge zurückbekommen wie gewünscht:
Code:
QueryExpression query = new QueryExpression();
query.EntityName = "salesorder";
query.ColumnSet = new ColumnSet();
query.ColumnSet.Columns.Add("createdon");

DataCollection<Entity> entityCollection = _service.RetrieveMultiple(query).Entities;


Dann habe ich das Ganze mit meiner Benutzerdefinierten Entität versucht und wieder einen Timeout geerntet obwohl ich das gleiche Feld verwende "createdon" das nun mal bei jeder Entität egal ob System oder Benutzerdefiniert enthalten ist.
Code:
QueryExpression query = new QueryExpression();
query.EntityName = "opd_gutschrift";
query.ColumnSet = new ColumnSet();
query.ColumnSet.Columns.Add("createdon");

DataCollection<Entity> entityCollection = _service.RetrieveMultiple(query).Entities;


Das ist doch völlig idiotisch ich muss doch auch Benutzerdefinierte Entitäten auslesen können :cry:

Re: Probleme mit QueryExpression

27. Mai 2015 11:06

Kaum macht man es richtig geht es auch :roll:
Die Abfrage war richtig aufgebaut wie ich schon dachte. Das Problem lag an der Registrierung des Plugins. Ich habe es an das Create einer opd_gutschrift gehängt allerdings als Post Step (!) :roll: ich nehme an das ich so einen Deadlock verursacht habe will das CRM die Tabelle der opd_gutschrift Entität für das Speichern des neuen Eintrags sperrt und ich so nicht mit einer queryexpression drauf zugreifen konnte. Wenn ich das Ganze in einen Pre Step lege geht es und ich bekomme für eine query auf opd_gutschrift auch was zurück. :-D

Viele Grüße
Nicole