Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mysql und D2009 - connection funktioniert nicht (https://www.delphipraxis.net/126900-mysql-und-d2009-connection-funktioniert-nicht.html)

emsländer 4. Jan 2009 17:32

Re: Mysql und D2009 - connection funktioniert nicht
 
Zitat:

Zitat von mkinzler
Integer hat ja eigentlich nichts mit Unicode zu tun :gruebel:
Zeig mal den Code zum kompletten Vorgang

inhalt von sstring bei Übergabe: 'select lfdnr, Anlagedatum, vermittler, mitarbeiter, Dossier, Name, Vorname, Bank, Darlehensnummer, PLZ_Objekt, ORT_Objekt, PLZ, Ort, fremdmittelinclkosten, endpreis FROM akten WHERE Akte_abgelegt="N" and geloescht ="N" and neuer_Antrag =0 order by lfdnr desc'

Delphi-Quellcode:
function TAktenManager.fillgrid(sstring : string; neu : boolean) : boolean;
  var
    _myRes: PMySQL_Res; //hier wird der gesamte Ergebnissatz gespeichert
    _myRow: PMySQL_Row; //enthält den aktuellen Datensatz
    reccount,i : integer;
    _fremdmittel, _endpreis : integer;
    _string : rawbytestring;
begin
  _fremdmittel := 0;
  _endpreis := 0;
  v_last_query := sstring;
  edt_sql_suchkommando.Text := sstring;
  result := true;
  AntiFreeze.Active := true;
  ausgabeliste.Visible := false;
//  such_alarm.visible := true;
  such_bar.Visible := true;
  _string := utf8encode(sstring);
  try
    db_label.caption := 'Datenbankzugriff';
    db_label.Repaint;
    mysql_query(v_fddcon, pchar(_string));
    db_label.caption := 'Datenauswertung';
    db_label.Repaint;
    _myRes := mysql_store_result(v_fddcon);
    db_label.caption := 'Daten einlesen';
    db_label.Repaint;
    ausgabeliste.ClearRows;
    if _myRes <> nil then begin
      reccount := mysql_num_rows(_myRes);
      if reccount <> 0 then begin
        such_bar.Max := reccount;
        such_bar.Refresh;
        showbutton(inttostr(reccount)+' Treffer');
        for i := 0 to RecCount -1 do begin
          such_bar.StepIt;
          such_bar.Refresh;
          _myRow := mysql_fetch_row(_MyRes);
          ausgabeliste.addrow();
          ausgabeliste.cells[0,i] := _MyRow[0]; //Datensatz-ID
          ausgabeliste.cell[1,i].AsString := _MyRow[1]; // Anlagedatum
          ausgabeliste.cells[2,i] := _myrow[2]; // Vermittler
          ausgabeliste.cells[3,i] := get_vermittler(_myrow[2]); // Vermittler
          ausgabeliste.cells[4,i] := _myrow[3]; // Mitarbeiter
          ausgabeliste.cells[5,i] := _myrow[4]; // Dossier
          ausgabeliste.cells[6,i] := _myrow[5]; // Name
          ausgabeliste.cells[7,i] := _myrow[6]; // Vorname
          ausgabeliste.cells[8,i] := _myrow[7]; // Bank
          ausgabeliste.cells[9,i] := _myrow[8]; // Darlehensnummer
          ausgabeliste.cells[10,i] := _myrow[9]; // PLZ_Objekt
          ausgabeliste.cells[11,i] := _myrow[10]; // ORT_Objekt
          ausgabeliste.cells[12,i] := _myrow[11]; // PLZ
          ausgabeliste.cells[13,i] := _myrow[12]; // Ort
          ausgabeliste.cells[14,i] := _myrow[13]; // fremdmittelinclkosten
          ausgabeliste.cells[15,i] := _myrow[14]; // endpreis
          _fremdmittel := _fremdmittel + strtoint(_myrow[13]);
          _endpreis := _endpreis + strtoint(_myrow[14]);
        end;
      end else such_meldung.caption := 'Keine Datensätze gefunden!';
      mysql_free_result(_myRes);            //Ergebniss
    end else such_meldung.caption := 'Fehler beim Datenzugriff! SQL-Fehlermeldung: ' + mysql_error(v_fddcon);
  except
  end;
  edt_fremdmittel.Value := _fremdmittel;
  edt_endsumme.Value := _endpreis;
  such_bar.Visible := false;
  AntiFreeze.Active := false;
  ausgabeliste.Visible := true;
  db_label.caption := 'Datenbank online';
  db_label.Repaint;
end;
Gruss

EL

mkinzler 4. Jan 2009 17:46

Re: Mysql und D2009 - connection funktioniert nicht
 
Die Felder werden auch UTF8 sein.
Versuch es mal mit Utf8decode()

emsländer 4. Jan 2009 17:52

Re: Mysql und D2009 - connection funktioniert nicht
 
Zitat:

Zitat von mkinzler
Die Felder werden auch UTF8 sein.
Versuch es mal mit Utf8decode()

leider nope :pale: auf dem Trip war ich auch schon vergebens


Gruss

EL

emsländer 4. Jan 2009 18:08

Re: Mysql und D2009 - connection funktioniert nicht
 
Die Ergebnisse sollen Pchar (also Zeiger) sein. Wie komm ich denn da dran, wenn nicht so wie bisher?

Gruss

EL

DeddyH 4. Jan 2009 18:12

Re: Mysql und D2009 - connection funktioniert nicht
 
Unter Delphi bis einschließlich 2007 waren PChars gleichbedeutend mit PAnsiChars. Seit Delphi 2009 sind das aber PWideChars (äquivalent gilt das auch für Chars und Strings). Wenn Du also Units verwendest, die unter einem Delphi < 2009 geschrieben wurden, musst Du PChar durch PAnsiChar usw. ersetzen, dann hast Du evtl. eine Chance, das alte Verhalten wiederherzustellen.

emsländer 4. Jan 2009 19:36

Re: Mysql und D2009 - connection funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von DeddyH
Unter Delphi bis einschließlich 2007 waren PChars gleichbedeutend mit PAnsiChars. Seit Delphi 2009 sind das aber PWideChars (äquivalent gilt das auch für Chars und Strings). Wenn Du also Units verwendest, die unter einem Delphi < 2009 geschrieben wurden, musst Du PChar durch PAnsiChar usw. ersetzen, dann hast Du evtl. eine Chance, das alte Verhalten wiederherzustellen.

Genau das habe ich getan und anbei das Ergebnis zum Einpflegen in die Codelib


Somit funktioniert alles wieder (mit ein paar Änderungen) :hello:

Falls da noch Fehler auftauchen, bitte Bescheid geben.

Gruss

EL


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.
Seite 3 von 3     123   

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