Fehler mit Scopes

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Fehler mit Scopes

Beitrag von Jan »

Gerade habe ich ein Verhalten festgestellt, daß mich irritiert. Ich arbeite gerne mit Scopes in dieser Version:

Code: Alles auswählen

DBSetScope(SCOPE_BOTH, cAlias->ID)
Nun hatte ich gerade die Situaltuion, daß die Datenbank leer ist. Und prompt kommt ein Laufzeitfehler .
Beschreibung: Ungültiger Datentyp für Feld/Indexschlüssel"
Operation: DbSetScope
Nur wenn ich das in eine Schleife

Code: Alles auswählen

If lastRec() > 1
, dann läuft das.

Passen Scopes nur in Datenbanken, die gefüllt sind?

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

es mag ungewöhnlich erscheinen einen skope auf eine leere DBF zu setzen, aber einen Laufzeitfehler darf es nicht verursachen.
Richtig - aus meiner Sicht - wäre die Rückgabe einer leeren Ergebnismenge, genaso als ob der Suchbegriff nicht in der DBF vorkommt.

Sende es doch als PDR an Alaska.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Scopes, die leere Antworten liefern (-> Eof() feuert), funktionieren einwandfrei. Der Fehler besagt, daß beim Versuch, das Scope zu setzen, ein ungültiger Schlüsseltyp vorliegt. Ich vermute, daß in diesem Moment für die Datenbank, die leer ist, ein anderer Index führt als derjenige, der cAlias->ID entsprechen würde. BTW, ist "cAlias" eine Variable oder tatsächlich der Alias der Tabelle? Wäre ersteres der Fall, wäre der Code falsch. Es müßte &cAlias->ID heißen.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

@ Hubert: Der Gedanke war mir auch schon gekommen. Ich wollte nur die Meinung der Profis einholen, ob ich nicht irgendetwas übersehen oder falsch verstanden habe 8) Wäre ja nicht das erste Mal. Ich werde Deinen Vorschlag aufgreifen und Alaska fragen.

@ Tom: Ja, an einen falschen führenden Index hatte ich auch schon gedacht. Aber nur ganz ganz kurz. Denn wenn ich die beschriebene Sicherungsabfrage einbaue, dann funktioniert das einwandfrei. Und zu cAlias: Das war in diesem Moment nur ein Platzhalter für die Anfrage im Forum. Daß das bei einer Variable &cAlias heißen müsste ist mir klar (aber trotzdem Danke für den Hinweis auf die mögliche Fehlerquelle).

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Tom hat geschrieben:Es müßte &cAlias->ID heißen.
wenn wir schon am Verbessern sind, wählen wir die neuere Schreibweise ohne Macro (cAlias)->ID :wink:

@JAN

um Fehler wie falscher Index aktiv etc. auszuschließen:

Lege im Beispiel einen gültigen Satz an und probiere.
Falls kein Fehler kommt ist der Code offensichtlich richtig oder ?
dann zape die Datei und sieh was passiert.
Wenn es nun kracht ist es meiner Meinung nach ein PDR.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert,

genau das habe ich gemacht. Und es hat gescheppert, wie erwartet.

Und jetzt das "tolle": Ich schreiben gerade ein kleines Beispiel für Alaska. Ohne Crash!

Ich hasse es!!!

Ich gebe Euch Bescheid sobald ich weiß, wo das Problem liegt.

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Ich glaube kaum, daß das ein PDR ist. Der Fehler liegt woanders. Ich setze seit Jahren Scopes ein, und selbstverständlich auch mit (noch) leeren Datenbanken oder leeren Zielmengen. Völlig problemlos.

@Jan: Hol Dir mal via DbInfo alle möglichen Informationen zu Deiner Tabelle unmittelbar vor dem forcierten Crash. Auch zu der, auf die im Scope verwiesen wird. Vielleicht sogar bis auf Feldebene herunter. Der Scope kann nicht nicht gesetzt werden, weil ein XBase-Fehler vorliegt, sondern weil Scope-Ausdruck und Index bzw. Feldinhalt der Zieltabelle nicht übereinstimmen.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Tom,

hab den Fehler anscheinend gefunden. Die Datenbank (nicht der Index) war irgendwie zerschossen. Nachdem ich die neu erstellt habe (nicht einfach nur gezappt), funktioniert das wieder einwandfrei. Was aber dummerweise nicht erklärt, warum das Testbeispiel überhaupt keinen Fehler verursacht hat. Aber heute habe ich wirklich keine Lust mehr, da auf Ursachenforschung zu gehen. irgendwann muß ich auch mal wieder was Produktives schaffen.

Oh mann, soetwas hält irgendwie sinnlos auf und nervt gewaltig!

Jan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Jan,

komm´ wir tauschen. Deine Programmiersorgen, gegen meine :wink:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Ach Manfred,

ich kauf nicht die Katze im Sack! Ich tausch nur wenn ich weiß, gegen was. Aber wie Du an meinen häufigen Beiträgen von mir in letzter Zeit sehen kannst trete ich im Moment gerne was an Dich ab.

Jan
Antworten