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????