AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank - Schreibend Zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank - Schreibend Zugreifen?

Ein Thema von Highttower · begonnen am 8. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#1

Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 12:44
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX
Hallo zusammen,

ich bin hier fast am wahnsinnig werden ... und vermutlich liegt es nur an meiner eigenen Dummheit ... wie so oft -.-. Ich suche eine Funktion mit der ich einfach in eine Datenbank (Firebird 2.1) SCHREIBEN kann ... ich bin schon den ganzen morgen am suchen und kann jetzt auf 4 arten Daten lesen aber ich find kein beispiel zum schreiben.

Wenn kann mich irgendwer von euch von meinem Leiden erlösen?

Vielen lieben Dank,


EDIT: Alter Titel: "Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen???"
Neuer Titel: "Datenbank - Schreibend Zugreifen?"
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen??

  Alt 8. Jun 2009, 12:47
Einfach per SQL
Insert into <Tabelle> (<Feldliste>) values (<Werte>);
Markus Kinzler
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Datenbank - Schreibend Zugreifen - Zu blöd zum Googlen??

  Alt 8. Jun 2009, 13:49
Hab ich ja versucht etwa so:
Delphi-Quellcode:
for I :=0 to List1.Count -1 begin
    for K := 0 to List2.Count -1 begin
        DBM.IBSQL1.SQL := DBM.IBSQL1.SQL + 'insert into
            + 'Feldname1; Feldname2+; Feldname3'
            + ' values '
            + (TotalkomplexeStruktur.UnterKlasse.ObjectList.Item[I] as TCastKlasse).Item[K] as string)
            + ',';
    end;
...
    DBM.IBSQL1.ExecQuery;
end;
Der mag aber die normalen '' Strings nicht , gibt es keine Methode die ich irgendwie überladen kann wo ich sagen kann:

[PSEUDOCODE]

Datenbank.Connect;
AddRow(TotalKomplizierterDatenTyp);

procedure AddRow(TotalKomplizierterDatenTyp : TTotalKomplizierterDatenTyp);
begin

Schleife mit I
Field[I]:=TotalKomplizierterDatenTyp.Item[I]

end;

[/PSEUDOCODE]

Viele Grüße

EDIT:


StringList ... sry done... -.-
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 14:42
Hallo,

du solltest dein .SQL mal vor dem ExecQuery ansehen (ShowMessage),
dann siehst du auch, was du verkehrt machst.


1.
ein normales SQL Insert beginnt erst mal so

Insert Into Table1(Feld1,Feld2,Feld3) ... Du schreibst aber statt dem Komma ein Semikolon, wozu ?
Ausserdem ein +, was hier überhaupt nicht hingehört,
und es fehlt die Klammer ) am Ende

'Feldname1; Feldname2+; Feldname3'


Zu deinem String-Problem, benutze Parameter.

Delphi-Quellcode:
var
  CastKlasse : TCastKlasse;
  sFieldValue : String; // damit man das auch mal Debuggen kann
begin
 
 ...

  DBM.IBSQL1.SQL:= 'Insert Into Table1(Feld1,Feld2,Feld3)'
                +'Values(:Feld1,:Feld2,:Feld3)';
  CastKlasse:= TCastKlasse(TotalkomplexeStruktur.UnterKlasse.ObjectList.Item[I]); // oder so ähnlich
  sFieldValue:= CastKlasse).Item[K]);
  DBM.IBSQL1.ParamByName('Feld1').AsString:= sFieldValue;
Dein DBM.IBSQL1.SQL := DBM.IBSQL1.SQL + XXX
macht auch nicht viel Sinn, weil das SQL-Statement immer länger wird in der Art

'Insert Into XX Insert Into YY '

Einzige Grund wäre, wenn die Felder in deiner List1 zu verschiedenen Tabellen
gehören würden und die Anzahl variabel ist.
Das ist aber nicht ersichtlich, weil meine Glaskugel List1 und List2 nicht kennt.


Edit:
TotalKomplizierterDatenTyp sollte durch lokale Variable zumindestens soweit
vereinfacht werden, dass man das debuggen kann (Watch-Point).


Heiko
Heiko
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 15:53
Hallo,

ja wie oben im Edit schon gesagt, ich habs soweit gelöst, stehe jetzt allerdings vorm nächsten Problem, wie wandle ich ein DateTime von Delphi in ein DateTime von Firebird? Geht das überhaupt? FloatToStr und DateTimeToStr gehn beide nicht, auch abendteuerliche Funktionen wie berechne die Zeit in sekunden von 1970 bis da hin gehn nicht ... jmd ne Idee?

Vielen Dank

Tobi
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 16:01
Hier gilt erst recht: Benutze Parameter, dann übernimmt IBX die Konvertierung. Dann ist aber nicht Param(..).AsString zu verwenden, sondern Param(...).AsDateTime o.ä. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 16:01
Mach dich mal über (SQL-)Parameter schlau
Markus Kinzler
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Datenbank - Schreibend Zugreifen?

  Alt 9. Jun 2009, 11:58
Hallo zusammen,
nach langem weiter googeln und viel rum gefrage bin ich auf die TIBTable gestoßen die genau das macht was ich wollte.

Vielen dank für eure Mühen, und verzeiht das ich mich mit Delphi noch recht unbeholfen anstelle, ich arbeite erst seit 2 Wochen mit dieser Sprache.

Grüße

Tobi
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Datenbank - Schreibend Zugreifen?

  Alt 9. Jun 2009, 13:40
Hallo,

das hätte ich dir auch sagen können, habe ich aber nicht.

TIBTable ist nur wegen der "Abwärtskompatibilität" zur BDE drin
und sollte nicht verwendet werden.


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Datenbank - Schreibend Zugreifen?

  Alt 9. Jun 2009, 13:41
Zitat von hoika:
...und sollte nicht verwendet werden.
Warum nicht?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz