Autor Beitrag
Tchiboo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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:

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 21.04.06 15:21 
Ich würde immer auf die DataSets, die hinter dem Grid stecken zugreifen.

_________________
Markus Kinzler.
Müscha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: 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

ausblenden Quelltext
1:
listbox.items.add(table1.fields[0] .Asstring);                   // funktioniert					


oder

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: Fr 21.04.06 16:35 
Ich habe das so gemacht

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: Fr 21.04.06 16:36 
Jörgi ich habs!!!!



ausblenden Quelltext
1:
edit1.Text:=(DBGrid1.SelectedField).value;					
Tchiboo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: Fr 21.04.06 17:00 
hä da versteh ich dich nicht, da ist das doch richtig


ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP Home, Mac OS

BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118



BeitragVerfasst: 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