Autor |
Beitrag |
Tchiboo
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 13:43
Hallo Leute!
Ich hab ein Problem! Ich hab das schonmal gemacht da ging das auch, jedoch will das jetzt nicht mehr. Ich will Text aus edit-Feldern in meine Datenbank speichern bzw. hinzufügen. Der stürzt jedoch bei dem Prozess ab!
Mein Quelltext ist folgender:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TFormAdressen.BBCKontakthinzuClick(Sender: TObject); var adresse, name:string; begin if (edname.Text='') or (edadresse.text='') then showmessage('Bitte Namen und E-Mailadresse eingeben!') else begin name:=edname.Text; adresse:=edadresse.text; Query1.Active:=false; Query1.Sql.Clear; query1.Sql.Add('INSERT INTO adressen (name,e-mailadresse) VALUES('''+name+''' , '''+adresse+''')'); Query1.execsql; memo1.Lines.Text := 'SELECT * FROM `adressen` ORDER BY (name) asc'; query1.SQL.Text := memo1.Lines.Text; query1.Prepare; query1.Open; end; |
Die Fehlermeldung gibt folgendes aus: Fehler in INSERT INTO anweisung!
Des Weiteren springt er nicht zu dieser Zeile sondern in die Zeile memo1.Lines.Text := 'SELECT * FROM `adressen` ORDER BY (name) asc';
Kann mir jemand Helfen?
Danke schonmal im Vorraus!
Jörg
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 21.04.06 13:59
-Benutze das nächste mal den Delphi-Tag
-Warum weist du die Inhalte der editfelder ersteinmal einer anderen Variable zu?
-Minuszeichen in Feldnamen sind sehr schlecht! Versuche die mal zu Quoten.
-Desweiteren würde ich parametrisierte Queries verwenden.
-Verwende besser Assign um Tstrings -Eigenschaft von einer Komponente auf die andere zu übertragen.
_________________ Markus Kinzler.
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 14:54
Hallo Markus!
Es lag an dem Minus! Danke für den Tipp!
Jedoch hab ich schon wieder ein nächstes Problem: Und zwar will ich aus einem DBGrid eine Bestimmt Zelle auslesen. Ich bekomm das nicht hin. Ich hab glaub ich schon so ziemlich ausprobiert, aber es geht nicht! Das kann doch nicht so schwer sein! oder?
Nochmal danke für den Tipp
PS: wie benutze ich den Delphi-Tag
Jörg
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 21.04.06 15:00
Entwerder Quellcode markieren und unter Bereiche Delphi: + Anklicken oder manuell in eckige Klammern eingeschlossenes delphi bzw. /delphi.
_________________ Markus Kinzler.
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 15:12
Dankeschön  ist sehr Hilfreich und gut für die Übersichtlichkeit!
Aber wie man einen Text aus einer beliebigen Zelle eines DBGrids ausließt weist du nicht zufällig Markus?
Jörg
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 15:15
Hey Jörgi
es gibt so richtige editfelder und labels die fürs DBGrid sind.
Unter dem reiter Datensteuerung kannste die auswählen und im objektinspektor kannste dann zum beispiel im editfld die spalte raussuchen welche angezeigt wird.
oder willst du durch markieren der einzelnen zeile irgendwo eingetragen bekommen?
Gruß Müscha
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 15:20
Moinsen Müscha!
Ich will den Text einer Zelle im DBGrid durch Doppelklick in ein editFeld eintragen lassen! Ich bekomm das aber irgendwie nicht hin! Mit einem normalen StringGrid ist das so einfach!
Jörg
P.S.: Wie war Mathe-Vorabi?
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 21.04.06 15:21
Ich würde immer auf die DataSets, die hinter dem Grid stecken zugreifen.
_________________ Markus Kinzler.
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 15:26
Mathe war guddi bis auf zweitens, mit doppelklick kann ich s nicht aber mit nem normalen klick
also vom DB GRid objektinspektor auf ereignisse gehen und auf OnCellKlick in das feld einfach doppelklicken,
dann kannst du da befehle reinschreiben
zum beispiel
Quelltext 1:
| listbox.items.add(table1.fields[0] .Asstring); // funktioniert |
oder
Quelltext 1:
| edit1.text:=table1.fields[0] .Asstring; // (nicht getestet) ==> geht auch, grade getestet!!! |
weiß jetzt nur nicht genau wie das mit query hinhaut
gruß müscha
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 21.04.06 15:29
Zitat: | weiß jetzt nur nicht genau wie das mit query hinhaut |
Geanuso, da beide dataSets sind.
Alternativ kannst du auch mit Table.FieldByName('<feldname').Value; oder Table.FieldByNumer(<nr>.value;arbeiten.
_________________ Markus Kinzler.
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 15:55
Das geht irgendwie nicht!
@ Müscha: Mit deinem Quelltext kann man doch auch nur eine bestimmte Zelle anzeigen lassen! Ich will ja irgendeine Markieren und die dann in einem editfeld ausgeben!
@Markus: Bei mir gibt es keine Anweisung namens FieldByName bzw FieldByNumber! Liegt das daran das ich Delphi 7 nutze?
THX für die Tipps
Jörg
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 21.04.06 16:09
Also das 2. muß so: table.Fields.FieldByNumber(<nr>).Value; heißen. Diese Methode liefert dir ein Feld in der Reihenfolge der Felder in der DB (also nicht in der Abfragereihenfolge bei einem Query).
Aber table.FieldByName('<feldname>').Value ist aber auch bei D7 vorhanden und liefert dir ein Feld anhand des Feldnamens. Mit alle 3 Methoden kannst du auf den Inhalt dea aktivien DS zugreifen, welcher der markierten Zeile im Grid entspricht.
_________________ Markus Kinzler.
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 16:17
Also der nimmt jetzt die richtige Spalte, jedoch nicht die markierte Zeile. Delphi nimmt immer den Text aus der ersten Zeile, egal ob ich die 3. oder 5. Zeile angeklickt bzw. markiert habe.
THX
Jörg
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 16:29
Zeig mal dein Quelltext wie du das überhaupt gemacht hast? da kann ich das acuh mal probieren, ich bekomms nämlich grade nicht hin.
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 16:35
Ich habe das so gemacht
Delphi-Quelltext 1:
| showmessage(table1.Fields.FieldByNumber(2).Value); |
der Zeigt mir jetzt halt den Text an, aber nur den ersten in der Spalte! Ich muss ja auch noch den in der 2.,3. usw Spalte anzeigen lassen können.
Das Problem was also besteht ist, das ich nicht weis wie ich eine bestimmte Zeile anspreche (eine Spalte kann ich ja mit der Variante von Markus wählen!)
Also wenn du weißt wie man eine bestimmte Zeile anwählen kann, dann bekommste ein Leckerlie.
Jörg
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 16:36
Jörgi ich habs!!!!
Quelltext 1:
| edit1.Text:=(DBGrid1.SelectedField).value; |
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 16:47
Naja nicht ganz
der nimmt ja jetzt den Text den ich anklicke!
Ich "Skizzier" dir das mal:
Also mein Grid sieht so ungefähr aus:
Name Mailadresse
Jörg J.Dubsky@gmx.net
Müscha ichweisdeinemailnichtmehr@keineahnung.de
Das Problem ist nun das wenn ich auf Müscha klicke in der 1. Spalte / 2.Zeile, das er da die Mailadresse aus der 2. Spalte/2. Zeile kopieren und in das editfeld einfügen soll!
Compris?!
Danke
Jörg
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 17:00
hä da versteh ich dich nicht, da ist das doch richtig
Quelltext 1:
| edit1.text:=table1.fields[1] .Asstring; |
egal wo du klickst, es wird immer die emailadresse eingetragen in der zeile wo du klickst oder versteh ich dch immernoch nicht?
|
|
Tchiboo 
      
Beiträge: 35
Win XP Home, Mac OS
|
Verfasst: Fr 21.04.06 17:16
Der zeigt mir dann trotzdem doch nur den ersten wert der Spalte an!
Du sagst ja in der programmierzeile:
Delphi-Quelltext 1:
| edit1.text:=table1.fields[1] .Asstring; |
das du in den Bereich 1 gehst und dort ließt er ja halt den 1. Wert aus!
Ich muss ja auch den 2.,3.,4., oder 1000. Wert auslesen können!
Hast du keine Idee wie man die makierte Zeile auslesen kann? Wenn ich beispielsweise in der 5. Zeile bin, das ich dann eine Showmessage bekomme mit dem Wert der Zeile (je nach dem in welcher man halt ist)!
|
|
Müscha
      
Beiträge: 118
|
Verfasst: Fr 21.04.06 17:28
Hää das ist das doch,
bei mir ist das, dass ich mit diesem befehl
egal auf welcher zeile ich klicke, zeigt er mir dann den wert der 2. spalte ind der zeile die ich markiert habe an.
also wenn ich auf die 5. zeile klicke zeigt der mir den wert der 5.zeile in der 2. spalte an. und das selbe passiert mit allen anderen zeilen auch!!!!
probiers nochmal zu erklären wenn das das nicht ist bitte...ich versteh immernoch nicht was du anderes willst
|
|