![]() |
Datenbank: SQLServerExpress,SQLServer • Zugriff über: ADO
Fehlermeldung nach erfolgreichem Connect zum Server
Wenn ich mich mit meiner ADOConnection zu meinem SQLServerExpress verbinde, ist alles schön, versuche ich mich aber nun zu einem SQLServer2000 zu connecten, auf der genau die gleiche DB liegt, dann erhalte ich nach der Connection eine Fehlermeldung, die wie folgt lautet...
Was mache ich falsch??? --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Tennis_Manager.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Die Datenmenge unterstützt keine Positionsmarken, die von Multi-Datensatz-Elementen benötigt werden.'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- Hier mein Code der keinen Fehler aufwirft. Der Fehler kommt erst danach. Zwischen dem Create des Datamoduls und dem OnShow des Hauptfensters...
Delphi-Quellcode:
procedure TDM.DataModuleCreate(Sender: TObject);
var PCName, ServerName:String; ini:TIniFile; begin PCName := GetComputerName; Servername := form1.cmb_servername.text; ini:=TIniFile.Create(App_Path + 'settings.ini'); if ini.ReadString('server','name','')<>'' then begin ServerName:=ini.ReadString('server','name',''); form1.cmb_servername.Text:=ini.ReadString('server','name',''); end; with ADOConnection1 do begin Connected:=false; ConnectionString:= 'Provider=SQLOLEDB.1;Password=matrox;'+ 'Persist Security Info=True;User ID=sa;'+ 'Initial Catalog=Tennis;'+ 'Data Source='+Servername+';'+ 'Use Procedure for Prepare=1;Auto Translate=True;'+ 'Packet Size=4096;Workstation ID='+PCName+';'+ 'Use Encryption for Data=False;Tag with column collation when possible=False'; Connected:=true; end; if ADOConnection1.Connected then ShowMessage('Verbindung zu ' + ServerName + ' hergestellt!') else begin ShowMessage('Verbindung zu ' + ServerName + 'nicht hergestellt!'); exit; end; //die db-controls erhalten ihr datafield //weather-controls Form1.ed_temp_min.DataField:='min_temp'; Form1.ed_temp_max.DataField:='max_temp'; Form1.ed_wind.DataField:='wind'; Form1.ed_link_txt.DataField:='link_txt'; Form1.mem_txt_today.DataField:='txt_today'; Form1.mem_txt_prognose.DataField:='txt_prognose'; //help-controls form1.ed_question.datafield:='question'; form1.mem_answer.datafield:='answer'; //player-controls form1.ed_pl_firstname.datafield:='first_name'; form1.ed_pl_secondname.datafield:='second_name'; form1.ed_ioc.datafield:='ioc'; form1.ed_bdate.datafield:='birthdate'; form1.ed_bplace.datafield:='birthplace'; form1.ed_residence.datafield:='residence'; form1.ed_height.datafield:='height'; form1.ed_weight.datafield:='weight'; form1.ed_plays.datafield:='plays'; form1.ed_profi_since.datafield:='profi_since'; //matches-controls form1.ed_m_id.datafield:='match_id'; form1.ed_pln_a.datafield:='player_A'; form1.ed_pln_b.datafield:='player_B'; form1.ed_pla_pts.datafield:='pts_a'; form1.ed_plb_pts.datafield:='pts_b'; form1.ed_pla_serv.datafield:='serv_a'; form1.ed_plb_serv.datafield:='serv_b'; form1.ed_set1_a.datafield:='set_1a'; form1.ed_set1_b.datafield:='set_1b'; form1.ed_set2_a.datafield:='set_2a'; form1.ed_set2_b.datafield:='set_2b'; form1.ed_set3_a.datafield:='set_3a'; form1.ed_set3_b.datafield:='set_3b'; form1.ed_set4_a.datafield:='set_4a'; form1.ed_set4_b.datafield:='set_4b'; form1.ed_set5_a.datafield:='set_5a'; form1.ed_set5_b.datafield:='set_5b'; //match-edit-controls form1.ed_m_id_edt.datafield:='match_id'; form1.ed_pln_a_edt.datafield:='player_A'; form1.ed_pln_b_edt.datafield:='player_B'; form1.ed_pla_pts_edt.datafield:='pts_a'; form1.ed_plb_pts_edt.datafield:='pts_b'; form1.ed_pla_serv_edt.datafield:='serv_a'; form1.ed_plb_serv_edt.datafield:='serv_b'; form1.ed_set1_a_edt.datafield:='set_1a'; form1.ed_set1_b_edt.datafield:='set_1b'; form1.ed_set2_a_edt.datafield:='set_2a'; form1.ed_set2_b_edt.datafield:='set_2b'; form1.ed_set3_a_edt.datafield:='set_3a'; form1.ed_set3_b_edt.datafield:='set_3b'; form1.ed_set4_a_edt.datafield:='set_4a'; form1.ed_set4_b_edt.datafield:='set_4b'; form1.ed_set5_a_edt.datafield:='set_5a'; form1.ed_set5_b_edt.datafield:='set_5b'; //die db-anbindungen werden aktiviert dt_weather.CommandText:='weather'; dt_weather.Active:=true; dt_help.CommandText:='helpdesk'; dt_help.Active:=true; dt_players.CommandText:='players'; dt_players.Active:=true; dt_tournament.CommandText:='tournaments'; dt_tournament.Active:=true; dt_matches.CommandText:='matches'; dt_matches.Active:=true; dt_match_edit.CommandText:='matches'; dt_match_edit.Active:=true; FormatGrids; ShowMessage('Anbindung fertig...'); end; |
Re: Fehlermeldung nach erfolgreichem Connect zum Server
Hallo Tom,
eventuell hast du bei der ADOConnection für CursorLocation einen unpassenden Wert (clClient) eingetragen. Oder du verwendest einen falschen CursorType bei deiner Query. Grüße vom marabu |
Re: Fehlermeldung nach erfolgreichem Connect zum Server
Hallo marabu,
Ich habe in einem anderen Thread gelesen, dass das nicht geht und wohl sogar bekannt ist, warum auch immer... bei der ADOConnection steht die CursorLocation auf clUseServer und ich nutze nur die AdoDatasets (bisher) und habe dort den CursorType auf ctKeyset stehen. Was extrem komisch ist, ist, dass ich nun nachdem ich die gesamten DB-Komponenten abgehangen habe, es erstens zwar funktioniert, ich aber unterschiedliche Ergebnisse bei einer SQL-Abfrage erhalte.
Delphi-Quellcode:
liefert mir bei der Anfrage an einen MSSQLServerExpress das korrekte Ergebnis zurück und von einem MSSQLServer2000 erhalte ich als RecordCount immer eine -1 zurück, obwohl der Eintrag definitiv vorhanden ist.
dm.dt_matches.CommandText:='Select * from matches Where match_id = ' + MatchID;
Probleme über Probleme...:-( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz