Autor |
Beitrag |
Dhakiyah
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 09.04.14 11:36
Hallo!
Hab da ein kleines Problem:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var qry_heute: TADOQuery; begin qry_heute := TADOQuery.Create(nil); qry_heute.Connection := dm.ADOConnection1; with qry_heute do begin close; SQL.Clear; SQL.ADD ('select sysdate() jetzt from dual'); ; end; qry_heute.open; Result := StrToDateTime(qry_heute.FieldByName('jetzt').AsString); qry_heute.Close; qry_heute.Free; end; |
Bei qry_heute.open knallt er mir raus.
Was mache ich falsch?
DB-Zugriff geht und DB Connected ist True.
Habe das Problem nur in der Unit, wenn ich es in einem Formular mit der Komponente mache gehts.
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
Beiträge: 19272
Erhaltene Danke: 1740
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 09.04.14 14:26
Was passiert denn? Schutzverletzung?
Abgesehen davon, dass da ein with drin ist, was ohnehin schon nicht schön ist, hast du in der Zeile mit dem SQL.Add am Ende der Zeile ein doppeltes Semikolon. Da hatte ich schon einmal richtig seltsame Effekte in Kombination mit with in der Form, dass der Compiler zwar keinen Fehler gebracht hat, aber fürchterlich darüber gestolpert ist und falsche Ergebnisse geliefert hat.
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mi 09.04.14 15:06
|
|
Dhakiyah
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Do 10.04.14 07:50
Moin!
Habe alle Varianten ausprobiert. Beim open knallt er raus mit der Meldung:
Im Projekt ... ist eine Exception der Klasse .... mit der Meldung 'access violation at ...: write of address .... ' aufgetreten.
Ist das mit dem with irgendwie nicht gut?
Ich habe das so gelernt und mache das immer so... o.O
_________________ Es ist soooo flauschig !!!
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 10.04.14 07:57
Sowohl dm als auch ADOConnection1 sind korrekt instanziert worden?
Das With ist meiner Meinung nach einfach nur unübersichtlich. Daher benutze ich persönlich es grundsätzlich nicht.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 10.04.14 08:00
Was passiert denn, wenn Du in die "Open"-Zeile einen Haltepunkt setzt und mit F7 durchsteppst? Damit sollte sich zumindest ermitteln lassen, wo genau der Fehler auftritt.
|
|
jaenicke
Beiträge: 19272
Erhaltene Danke: 1740
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 10.04.14 08:59
Wenn der Unterschied zwischen Komponente und selbst erzeugt ist, gibt es eigentlich nur zwei Unterschiede:
Erstens der Owner - vielleicht solltest du es einmal mit etwas anderem als nil probieren, z.B. deinem Formular testweise.
Zweitens ggf. gesetzte Eigenschaften im Objektinspektor, aber wenn du da keine gesetzt hast, sollte das nicht anders sein als manuell erzeugt.
Wie sieht der Stacktrace an der Stelle aus (in Delphi, wenn du bei der Exception auf anhalten gehst)? Und welche Adressen stehen denn in der Fehlermeldung?
Nersgatt hat folgendes geschrieben : | Das With ist meiner Meinung nach einfach nur unübersichtlich. |
Und potentiell gefährlich.
Das ist als ob du einem Soldaten sagst "Alles was ich dir sage mach in die Richtung A" und dann den Schießbefehl erteilst. Schade nur, wenn dieser für eine nicht drehbare Kanone gilt, die z.B. in deine Richtung zeigt. Der Soldat mag das noch merken, der Compiler nicht.
|
|
Dhakiyah
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Do 10.04.14 10:23
Also, wir haben jetzt viel rumprobiert.
Er scheint ein Problem mit der Übergabe von () haben.
Wenn ich z.B.
select * from tabelleX
mache, kommt kein Fehler, sobald ich aber z.B.
select min(spaltex) from tabelleY
oder eben das select sysdate() oder now() from dual
mache knallt er raus mit einer Zugriffsverletzung.
Kennt jemand das Problem?
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
Beiträge: 19272
Erhaltene Danke: 1740
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 10.04.14 11:52
Was ist denn das für eine Datenbank dahinter?
Und welcher Provider wird in der Connection benutzt?
|
|
Muck
Beiträge: 98
Erhaltene Danke: 8
Win 8, Win 7, Vista, Win XP
Delphi XE3, Delphi 2009, Delphi 2007, Delphi 5
|
Verfasst: Do 10.04.14 14:43
Guten Morgen,
ich hatte vor Jahren gleiches Problem mit einer ADOQuery auf einer aelteren Version. Zugriffsverletzungen traten nicht mehr auf nach
Delphi-Quelltext 1: 2:
| LockType:=ltReadOnly; ParamCheck:=false; |
Vielleicht hilft es ja.
bye
Markus
_________________ Computers are like air conditioners. They work fine until you start opening windows!
|
|
Dhakiyah
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Fr 11.04.14 06:28
Provider=MSDASQL.1
Datenbank=MySQL
@Markus
Delphi-Quelltext 1: 2:
| LockType:=ltReadOnly; ParamCheck:=false; |
Wo genau setze ich das ein?
EDIT:
Es schein mit dem LockType und dem ParamCheck zu funktionieren.
_________________ Es ist soooo flauschig !!!
|
|