Neuling braucht hilfe
-
Hallo Coders,
also, ich habe früher schon mal ein bisschen Pascal programiert, und bezeichne mich deshalb als neuling.
Vorgeschichte:
Ich arbeite in einem kleinen Computergeschäft und dar wir mitlerweile stark expandieren ist es und ein bedürfniss eine "Verwaltungssoftware" für verschiedene Aufträge zu entwickeln.
Mein Problem:
Die Datenbankanbindung(Access2000) über die BDE läuft, und funktioniert. Nun habe ich aber ein Formular entwickelt mit insgesamt 100 DBEdit-Feldern, 20 DBLookupComboboxen und 20 TDBCheckboxen. In diesem Formular sollen die Hardwarebauteile die in einen Kundencomputer eingebaut werden registriert werden (Seriennummern, Hersteller, Modell usw.). Die inhalte aller Felder sollten in einer Tabelle gespeichert werden. Über die Comboboxen sollen die Hardwarebezeichnung(Mainboard, Prozessor usw.) auswählbar sein das klappt auch. Aber wenn ich in der Liste einträge mache und diese speichern will bekomme ich folgende Fehlermeldung:
Exeption der Klasse EDBEngineError aufgetreten. Meldung: 'Indexfehler[Microsoft][ODBC Access Driver] Abfrage ist zu Komplex.
Wie könnte ich das Problem beseitigen. Ich Code mit "Borland C++Builder6"
Im Voraus schon mal Danke für eure Hilfe, und wenn ihr noch was wissen müsst laßt es mich bitte wissen.
P.S. Wenn mir noch jemand eine nach möglichkeit kostenlose gute Software zur erstellung der Installationsroutine nennen könnte wäre das echt super.
-
Hallo,
bei deinem Problem mit der Datenbank kann ich dir leider nicht helfen, aber eine super Software zum Erstellen einer Installationsroutine kann ich dir gerne nennen
Auf http://www.jrsoftware.org/isinfo.php findest du das komplett freie Inno Setup.
Gruß Skay
-
1. Problem (Datenbank)
Erst mal bin ich erschreckt. Wenn ich unsern Usern ein Formular mit über 140 Steuerelementen drin auf den Tisch klatschen würden, würden die mich foltern.
Naja, warum dein Insert nicht funktioniert weiss ich nicht. Meine Kristallkugel ist immer noch nicht aus der Reperatur.Vielleicht erzählst du uns einfach, wie du den Insert machst.
2. Problem (Installer)
Ist doch einer beim BCB dabei, der recht gut funzt.
-
AndreasW schrieb:
Erst mal bin ich erschreckt.
Es muss heißen: "Ich habe mich erschreckt."
Wenn ich unsern Usern ein Formular mit über 140 Steuerelementen drin auf den Tisch klatschen würden, würden die mich foltern.
Wo lebst du denn? Du weißt doch,. wie das immer st mit der heutigen Software: Seriennummern, Authoritätsnummern, Passwörter, Hersteller, ......
Man weiß ja nicht, was die dort für Software verkaufen.Naja, warum dein Insert nicht funktioniert weiss ich nicht.
Dann musst du auch kein Kommentar dazu loswerden.
Nun aber zu Frage 1:
Der Fehlermeldung nach zu Urteilen, hast du ein Problem mit der Access-Datenbank.
-
Windoof schrieb:
AndreasW schrieb:
Erst mal bin ich erschreckt.
Es muss heißen: "Ich habe mich erschreckt."
Es muss heißen: "Ich bin erschrocken." - "Ich habe mich erschreckt." ist umgangssprachlich.
-
Windoof schrieb:
Wo lebst du denn? Du weißt doch,. wie das immer st mit der heutigen Software: Seriennummern, Authoritätsnummern, Passwörter, Hersteller, ......
Man weiß ja nicht, was die dort für Software verkaufen.Trotzdem ist die Useability vermutlich nicht allzu gut, wenn der Benutzer von sovielen Steuerelementen "erschlagen" wird. Diesen Zustand könnte man bestimmt mit unterdialogen und so verbessern. Ich denke, das ist der Punkt auf den Andreas hinweisen wollte.
Windoof schrieb:
Naja, warum dein Insert nicht funktioniert weiss ich nicht.
Dann musst du auch kein Kommentar dazu loswerden.
Gleichfalls.
Windoof schrieb:
Nun aber zu Frage 1:
Der Fehlermeldung nach zu Urteilen, hast du ein Problem mit der Access-Datenbank.Wahnsinns Analyse... ... wenn auch nicht ganz korrekt und schon gar nicht komplett, aber trotzdem ne gewaltsleistung. Ich tippe allerdings eher auf ein Problem mit dem SQL Statement oder ein Problem mit den Beziehungen der Tabellen innerhalb der Access Datenbank.
@Derberon: Zeig doch bitte mal die Query. Kann es sein, dass du irgendwelche Beziehungen definiert hast, die nicht auflösbar sind? Funktioniert die von dir generierte Abfrage, wenn du sie im SQL-Editor von Access eingibst? Was meldet Access zurück? Könnte es an der Zahl der Argumente liegen?
-junix
-
Also ich habe bis jetzt nur "Standartbauteile benutzt", das heißt der befehl für das Insert wird über das Schaltflächenmodul "DBNavigator" gegeben. Eine direkte SQL-Anweisung habe ich nicht geschrieben, sie wurde automatisch generiert. Ist es möglich das eine SQL-Anweisung überfordert ist wenn sie 120 Einträge im SELECT hat? In der DB gibt es bis jetzt noch keine Beziehung, habe bis jetzt nur drei Tabellen. Eine für die Bauteile( 1 Feld), eine für die Komponenten welche eingebaut werden (122 Felder), eine für die Kundenstammdaten(ca 30 Felder).
Noch mal zur erklärung warum in dem Formular 120 Elemente enthalten sind:
Das Formular soll eine Eingabemaske für alle Bauteile welche in einen Computer eingebaut werden, und die dazugehörigen Daten. Es muss wegen der Übersichtlichkeit auf eine Seite.
Muss ich vieleicht in der BDE bzw. ODBC irgend was umstellen, wenn ich so große Datenmengen auf einmal in die DB schreibe?
-
hallo,
hast du einen primärschlüssel, und wie und wann wird der gebildet? hast du das richtige access auf deinem system bzw. den treiber in der odbc-verwaltung?
du hast die 6er und verwendest noch die bde, obwohl diese von borland nicht mehr weiterentwickelt wird. hast du keine ado-komponenten?dann brauchst du für den zugriff keine bde und musst diese auch nicht auf jedem zielsystem installieren. das alles sind schon recht fundamentale dinge die du dir evtl. noch einmal gut überlegen solltest, denn der aufwand ist größer wenn man später wieder 5 schritte zurück muss um etwas zu erhalten das man schon von anfang an hätte haben können...
mfg
murph
-
Hi,
Ist es möglich das eine SQL-Anweisung überfordert ist wenn sie 120 Einträge im SELECT hat?
das glaub ich nicht.
Exeption der Klasse EDBEngineError aufgetreten. Meldung: 'Indexfehler[Microsoft][ODBC Access Driver] Abfrage ist zu Komplex.
Den Schwerpunkt beim Lesen der Fehlermeldung sollte man in diesen Fall eventuell auf Indexfehlerlegen.
Wenn in einer Tabelle ein Key definiert ist und du ein Datensatz einfügen willst, der über diese Schlüssel nicht mehr eindeutig ist, könntest du ein Indexfehler bekommen.
-
wenn mich nicht alles täuscht und du löscht mal spasseshalber 8 feldnamen aus der accesstabelle, also das du unter 114 felder kommst müsste es wieder funktionieren.
dieses prob. hatte ich auch mal, deswegen musste ich meine tabelle teilen
bzw. mein ganzen db-konzept über den haufen schmeissen.mfg
vergisseshatte mit ADO auch die selben probs
-
nimm dann eine andere Datenbank.
-
Hi Coders,
Danke erstmal für eure Hilfe. Der Tip mit ADO war wircklich gut. Seit ich ADO benutze habe ich das Problem mit der Komplexen Abfrage nicht mehr, und der Zugriff auf die DB ist schneller, sondern bekomme jetzt eine definitife Meldung das meine Tabelle zu Viele Felder enthält. Jetz teile ich erst einmal die Tabelle auf und schaue dann weiter.
Derberon
-
junix schrieb:
Windoof schrieb:
Naja, warum dein Insert nicht funktioniert weiss ich nicht.
Dann musst du auch kein Kommentar dazu loswerden.
Gleichfalls.
Wo hab ich ein Kommentar zum zweiten Problem abgelassen?
-
Dein Kommentar zu Andreas' Aussage war mehr als unnötig, denn im Gegensatz zu deinem Kommentar hatte seiner konstruktive Informationen eingebettet (auch wenn das für den "Flachleser" nicht unbeding gleich ersichtlich war)
-junix