Entwickler-Ecke
Datenbanken - Kann mdb nicht öffnen! Parameter hat keinen Standartwert o.0
LowSkills - Mi 18.07.07 19:20
Titel: Kann mdb nicht öffnen! Parameter hat keinen Standartwert o.0
Ich habe seit geraumer Zeit den Fehler bekommen, dass ein Parameter keinen Standartwert hätte. Aber: Von vorne.
Ich habe eine Tabelle und die widerum hat ne Menge Felder mit allen möglichen Inhalten.
Das neueste Feld ist ein Feld, in dem lediglich ein nummerischer Wert drinsteht: 0, 1 oder 2. Im Moment steht überall ne Null drin. Das ist auch gut so.
Jetzt übergebe ich die SQL-Strings und sage dann "bitte db öffnen und ausführen". Dann schmiert das prog ab mit der Meldung:
"Parameter'[T1001 - Verlag].[PL-IX - ID Anrede zum ASP]' hat keinen Standartwert. [...]"
Ich hab echt null Peilung, was da jetzt wieder im argen ist. Es steht doch überall ein wert drin...
Der Felddatentyp in Access ist als "Zahl" angegeben, Feldgröße als "Integer", der definierte Standartwert ist "0".
Blick einer von euch durch oder hat schon mal ein ähnliches Prob gehabt?
Vielen Dank für Eure Hilfe!
ene - Do 19.07.07 06:56
Hi,
händisch bekommst du sie noch auf? Dann wäre der Code von Interesse.
LowSkills - Do 19.07.07 08:37
wie meinen? o.0?
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure HändischVerstehen(Sender: TObject); var Händisch : string; begin Händisch = 'von Hand'; end; |
Also der Code ist folgender:
(Auszug)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| If FileExists(GetSpecialFolder($26)+'\Power Tools\SQL\relevantVLG.dat') Then begin try Datenaustausch.ADOQuery.Close; Datenaustausch.AdoQuery.SQL.Clear; Datenaustausch.ADOQuery.SQL.LoadFromFile(GetSpecialFolder($26)+'\Power Tools\SQL\relevantVLG.dat'); Datenaustausch.ADOQuery.Open; Datenaustausch.ADOQuery.ExecSQL; Verlagsanzahl:=Datenaustausch.ADOQuery.RecordCount; SENDINGSTATS.MM_LogDatei.Lines.Clear; Datenaustausch.ADOQuery.First; For i:=0 to Datenaustausch.ADOQuery.RecordCount do begin Feldinhalt:=Datenaustausch.ADOQuery.FieldValues['Code Verlag']; SENDINGSTATS.MM_LogDatei.Lines[i]:=Feldinhalt; Datenaustausch.ADOQuery.Next; end; Datenaustausch.ADOQuery.Close; SENDINGSTATS.MM_LogDatei.Lines.SaveToFile(GetSpecialFolder($26)+'\Power Tools\Temporary\relevanteVLGs.dat'); except SENDINGSTATS.RichEdit_SENDINGSTATS.Lines.Add('Ein Fehler ist bei der Ermittlung aller VLG mit Anzahl TB > 0 aufgetreten...'); FailedRequest_close; end; |
Nur zur Info: Die SQL-Anweisungen sind korrekt und fehlerfrei, dass hat das hat Access mir nähmlich aufgrund meiner gewählten Parameter so zusammengewürfelt.
Hoffe, dass hilft weiter, wenngleich ich auch wenig Hoffnung hege...
Danke schonmal!
Agawain - Do 19.07.07 09:32
Da
Delphi-Quelltext
1:
| For i:=0 to Datenaustausch.ADOQuery.RecordCount do |
das geht schon mal nicht, weil Du die Schleife einmal mehr durchläufst, als gut ist :wink:
Delphi-Quelltext
1:
| For i:=0 to Datenaustausch.ADOQuery.RecordCount - 1 do |
Gruß
Aga
ene - Do 19.07.07 09:38
Wie sieht denn der SQL-String aus? Baust du eine Connection vorher auf?
Und händisch:= DoppelklickAufDB.mdb
LowSkills - Do 19.07.07 10:04
ene hat folgendes geschrieben: |
Wie sieht denn der SQL-String aus? Baust du eine Connection vorher auf? |
Zu Connection vorher Aufbauen:
Ja und Nein.
Ich benutze die Selbe AdoConnection für zig Abfragen und Routinen, also wird und wurde Sie vor dem Punkt an dem es hakt schon mehrfach geöffnet, wieder geschlossen, neue SQL Tags rein, wieder öffnen und so. Zum Zeitpunkt der kritischen Abfrage ist Sie geschlossen, daher auch der Open-Tag, wo es hakt.
Den SQL-String kann ich dir jetzt nicht eins zu eins widergeben, der ist nämlich bei mir zu Hause auf dem Rechner, aber sinngemäß steht folgendes drin:
SQL-Anweisung
1: 2:
| SELECT DISTINCTROW [...],[T1001 - Verlag].[PL-IX - ID zum ASP],... FROM [T1001 - Verlag]; |
Ich bin mittlerweile echt dizzy. Hab wie gesagt leider kein delphi auf der Arbeit.
@Agawain:
Irgendwie hatte ich soetwas schon erwartet. Ja ja, die lieben Schleifen. Werd mich da dann später drum kümmern. Ich mag delphi... :)
OlafSt - Do 19.07.07 10:21
Meist deutet der Fehler darauf hin, das man im Query ein DB-Feld anspricht, das es in der Tabelle nicht gibt. 99% der Fälle sind Tippfehler, der Rest ist "vergessen, das gelöschte Feld auch im Query zu entfernen"...
LowSkills - Do 19.07.07 10:28
Das würde einiges erklären. Ich habe die aktuelle db erst seit ein paar tagen. Davor habe ich bereits vorab "ins blaue" programmiert. Bei den Tests mit der "alten" db gab es eben dieses Feld noch nicht. Der Fehler kam da schon im selben wortlaut. Jetzt gibt es dieses Feld allerdings und ich kann mir nur schwer vorstellen, einen Fehler in der SQL-Anweisung drinzuhaben. Wie gesagt, die Abfrage wurde mit Access zusammengebastelt, ich habe einfach das was in der SQL-Ansicht drinne steht rauskopiert und damit sollte delphi (wie gehabt) problemlos arbeiten können. Ich werd es dennoch überprüfen. Ihr könnt euch ja derweil gedanken machen, ob es tatsächlich auch ein anderer Fehler sein könnte. Melde mich dann in ner viertel Stunde zurück.
:mrgreen:
bis gleich....
LowSkills - Do 19.07.07 12:11
Überprüfung abgeschlossen. Leider muss ich folgendes verlauten lassen:
Die Zeichenfolgen sind Absolut identisch. Es handelt sich also dabei definitiv nicht um einen schreibfehler. Jemand noch ne Idee?
:autsch:
Danke...
OlafSt - Do 19.07.07 12:30
Dann würde ich jetzt das SQL-Statement genauer beäugen. Unter Umständen wird da in anderen Tabellen auf fehlende Felder zugegriffen, oder es werden DB-Felder umbenannt und dann nicht mehr korrekt angesprochen etcpp.
Im Delphi-Code ist IMHO der Fehler nicht zu suchen. An einem "Open" kann man nicht viel falsch machen.
LowSkills - Do 19.07.07 12:53
werd mich gleich mal zur Beratung mit dem Für die Tabellen verantwortlichen zur Beratung zurückziehen. Sobald ich die Heiligen Hallen der Systemadministration verlassen habe und ggf. Klüger geworden bin, werde ich euch etwaige Schritte in die Richtige oder auch falsche Richtung wissen lassen...
Also in diesem Sinne schonmal vorab danke für eure Hilfe.
Bis später dann.
tschuhuss! :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!