AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus Sql Db in Paradox Db Speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus Sql Db in Paradox Db Speichern

Ein Thema von Jürgen99 · begonnen am 21. Mär 2006 · letzter Beitrag vom 22. Mär 2006
Antwort Antwort
Jürgen99

Registriert seit: 3. Feb 2006
3 Beiträge
 
#1

Daten aus Sql Db in Paradox Db Speichern

  Alt 21. Mär 2006, 12:33
Datenbank: Mysql / Paradox 7 • Zugriff über: mysq.pas und tquery
Hallo ihr delphianer,

habe hier ein kleines Problem, ich will aus meiner mysql datenbank.tabelle datensätze auslesen und diese an eine paradox db.tabelle anhängen. Benutze zum auslesen der mysql db mysql.pas routinen, die datensätze werden per schleife in einem array gespeichert und per query in die paradox tabelle übertragen.
Soweit so gut er trägt die ersten zwei datensätze in die tabelle ein danach kommt aber ein
error :
"Project raised exception class EAccess Violation with message Access violationat Adress 00402E27 in module project.exe. Read of adress6973A9BA."

Hier gleich noch der Code dazu:

Der Record ->

Delphi-Quellcode:
type
  TPostEntry = record
    ort : string[30];
    nummer: String[30];
   end;
Das eigentliche Programm ->

Delphi-Quellcode:
procedure TForm1.Button9Click(Sender: TObject);

var
  _myCon: PMySQL;
  host, user, pass, db: PChar;
  query : PChar;
  _myRes: PMySQL_Res;
  _myRow: PMySQL_Row ;
  Posts : Array of TPostEntry;
  x : pchar ;
  i: integer;

begin
// Login sql db
  host := 'XXXX';
  user := 'XXX';
  pass := nil;
  db := 'XXX';
  _myCon := mysql_init(nil);
  if _myCon = nil then
    begin
      ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren');
      Exit;
    end;
  //Verbindung herstellen
  if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then
    begin
      ShowMessage('Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon));
      Exit;
    end;

  ShowMessage('Verbindung hergestellt');
  query := 'SELECT nummer,ort FROM adresse';
  mysql_real_query(_myCon, query, Length(query));
  _myRes := mysql_store_result(_myCon); //alle Datensätze vom Server anfordern
  if _myRes = nil then
    begin
      ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
      Exit;
    end;
  SetLength(Posts, mysql_num_rows(_myRes)); //Posts-Array-Größe auf Anzahl der Datensätze setzen
  for i := 0 to High(Posts) do
    begin
      _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
      posts[i].nummer := _myRow[0];
      posts[i].ort := _myRow[6];
  // ShowMessage(Nummer: ' + posts[i].nummer+'');
      x:= 'select * from tadresse';
      query30.close;
      Query30.Sql.Text := x;
      Query30.Open;
   // Datensatz einfügen
      Query30.append;
      Query30['nummer'] := posts[i].nummer;
      Query30['ort'] := posts[i].ort;
      Query30.Post;
     end;
Desweiteren wird der Inhalt der spalte Ort nicht richtig an die paradox db übertragen.
Sql-DbSpalte (Ort) = Text(30)
Paradox-DbSpalte (Ort) = A(30)

Bin ja der meinung das mein record net funzt, aber weis langsam nicht mehr weiter

Hat einer von euch ne IDEE????
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Daten aus Sql Db in Paradox Db Speichern

  Alt 21. Mär 2006, 13:00
Herzlich willkommen in der Delphi-PRAXiS, Jürgen.

Wenn du ohnehin die BDE einsetzt, dann könntest du diese für den Zugriff auf beide Datenquellen verwenden. Du müsstest lediglich einen ODBC-Treiber für MySQL installieren. Die Übernahme von Tabellendaten ist dann mit einem einzigen SQL-Statement zu machen:

INSERT INTO PDX_TABLE SELECT * FROM ":ODBC:MYSQL_TABLE Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Jürgen99

Registriert seit: 3. Feb 2006
3 Beiträge
 
#3

Re: Daten aus Sql Db in Paradox Db Speichern

  Alt 21. Mär 2006, 16:18
Zitat von marabu:
Du müsstest lediglich einen ODBC-Treiber für MySQL installieren. Die Übernahme von Tabellendaten ist dann mit einem einzigen SQL-Statement zu machen:

INSERT INTO PDX_TABLE SELECT * FROM ":ODBC:MYSQL_TABLE Freundliche Grüße vom marabu
Erstmal ein fettes Dankeschön für die schnell antwort , hab mir den treiber gezogen und installiert und meine query damit verbunden.
Nur wie kann ich die Benutzerdatenquelle(MysqlPar) die ich in mein bde admin. eingetragen habe auch auf anderen rechnern verwenden, wo das programm mit bde installiert wird ohne andauernd die einstellung manuell in bde vornehmen zumüssen.
Ist die Benutzerdatenquelle(MysqlPar) in einer datei gespeichert die ich einfach kopieren kann?
  Mit Zitat antworten Zitat
Jürgen99

Registriert seit: 3. Feb 2006
3 Beiträge
 
#4

Re: Daten aus Sql Db in Paradox Db Speichern

  Alt 21. Mär 2006, 17:24
Also so richtig funktioniert es doch nicht....
Ich verbinde meine query komponete mit meiner paradox.database
und mein query.sql string lautet dann

insert into adresse(nr) select nr from mysqlpar.auftrag .

Irgendwas haut da net hin..?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Daten aus Sql Db in Paradox Db Speichern

  Alt 22. Mär 2006, 10:27
Hallo Jürgen,

die Tücke liegt im Detail, aber wenn man die Hinweise aus der Online-Hilfe alle befolgt, dann funktioniert es. Nach dem Einrichten einer ODBC-Datenquelle ist diese zwar im BDE-Admin sofort zu sehen, aber damit sie in deinem Programm verwendet werden kann, musst du erst noch einen ODBC-Treiber konfigurieren. Dazu geht man auf der Seite Konfiguration im BDE-Admin in die ODBC-Liste und erstellt dort über das Kontextmenü einen neuen Treibereintrag. Als Treibername vergibst du MYSQL_DEMO, wählst den korrekten ODBC-Treibernamen aus und trägst in das letzte Feld den Namen der ODBC-Datenquelle ein, die du vorher eingerichtet hast.

Auf der Seite "Datenbanken" richtest du dann noch einen Alias DPDEMO mit dem Treiber MYSQL_DEMO ein. Nachdem du alle Änderungen gespeicherst hast, kannst du per SQL folgendes machen:

insert into adresse(nr) select nr from ":dpdemo:auftrag Sieht schwierig aus, ist es aber nicht.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:22 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