Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа программисты, подскажите как правильно: Для подключения к MSSQL я на основе стандартного компонента TSQLConnection создал свой, и добавил несколько процедур и функций. Одна из функций это function Open: boolean; virtual; она вызывает форму регистрации, для ввода имени и пароля. --------------------------------------------------------------------------- function TBankSQLConnection.Open: boolean; var Form: TWaitConnectionForm; Done: boolean; begin LoginPrompt:=False; Result:=True; Done:=False; if (ConnectPassword<>'') and (ConnectName<>'') then begin Form:=TWaitConnectionForm.Create( nil ); Application.ProcessMessages; if LoginPrompt = False then begin Params.Values['User_Name'] := ConnectName; Params.Values['Password'] := ConnectPassword; Screen.Cursor:=crSQLWait; end ; try Inherited Open; Done:=True; except ConnectPassword:=''; end ; Screen.Cursor:=crDefault; Form.Free; end ; while not Done do begin if GetConnectParams then begin Form:=TWaitConnectionForm.Create( nil ); Application.ProcessMessages; if LoginPrompt = False then begin Params.Values['User_Name'] := ConnectName; Params.Values['Password'] := ConnectPassword; Screen.Cursor:=crSQLWait; end; try Inherited Open; Screen.Cursor:=crDefault; Form.Free; Done:=True; Break; except on E: EDatabaseError do begin Screen.Cursor:=crDefault; Form.Free; Application.ProcessMessages; ShowErrorMessage('Ошибка: '+E.Message); end ; else begin Screen.Cursor:=crDefault; Form.Free; Application.ProcessMessages; if Assigned(Application) then ApplicationHandleException(Self); end; end; end else begin Result:=False; Break; end; end; if Done then begin if (ConnectPassword='') and Assigned(SetPassword) then SetPassword ( Self ); ConnectPassword:=''; end; Application.ProcessMessages; end; ------------------------------------------------------------------------------ Вторая функция собственно и есть Форма для регистрации function TBankSQLConnection.GetConnectParams: boolean; var Form: TSQLConnectDialog; begin Form:=TSQLConnectDialog.Create( nil ); ConnectPassword:=''; Form.NameField.Text:=ConnectName; Form.PasswordField.Text:=ConnectPassword; Form.OKExit:=False; Form.ShowModal; try if Form.OKExit then begin ConnectName:=Trim(Form.NameField.Text); ConnectTime:=Time; ConnectPassword:=Trim(Form.PasswordField.Text); Result:=True; end else Result:=False; finally Form.Free end; Ну и конечно конструктор constructor TBankSQLConnection.Create(AOwner: TComponent); begin inherited Create(AOwner); KeepConnection:=True; ConnectPassword:=''; ConnectName:=''; end; ---------------------------------------------------------------------------- В программе я кидаю этот компонент (TBankSQLConnection) на форму настраиваю его для подключения и в событие FormCreate пишу: if not BankSQLConnection.Open then Halt ( 1 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 08:59 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
А в чем вопрос-то ? Тестируй ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 09:12 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
Уважаемый Mik Prokoshin не вопросы а мои действия хотелось бы услышать мнения специалистов кто работает с dbExpress + MSSQL может есть какие свои предложения хотелось бы услышать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 09:15 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
Но и есть вопрос. Как перехватить код ошибки в данном коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 09:17 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
Ну так где именно у Вас ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 10:44 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
TO Александр Спелицин Ошибка может появится в любое время. Самая первая ошибка при регистрации пользователя с SQL Server. Хочу получить только код ошибки и локализовать его по русски вот пример который записывается в файл appexc.log 22.09.03 9:27:00. Exception EDatabaseError in module MDIAPP.exe at 000749C5. SQL State: 42000, SQL Error Code: 18456 Login failed for user 'Sergei'. его я получаю при помощи процедуры: const LogName: string = 'C:\appexc.log'; procedure LogException; var fs : TFileStream; m : Word; buf: array [0..511] of Char; begin if FileExists(LogName) then m :=fmOpenReadWrite else m :=fmCreate; fs := TFileStream.Create(LogName, m); fs.Seek(0, soFromEnd); StrPCopy(buf, DateTimeToStr(Now)+'. '); ExceptionErrorMessage(ExceptObject, ExceptAddr, @buf[StrLen(buf)], SIZEOF(buf)-StrLen(buf)); StrCat(buf,#13#10); fs.WriteBuffer(buf, StrLen(buf)); fs.Free; end; хотелось бы так: но это всё с BDE работает procedure ShowMyDBMessage(Error : EDBEngineError); begin case GetNativeError(Error) of 10003 : Application.MessageBox(PChar(WrongUserName), PChar('Ошибка регистрации'),MB_OK+MB_ICONERROR ); 547 : Application.MessageBox(PChar('Имеются документы удаление не возможно'), PChar('Ошибка удаления'),MB_OK+MB_ICONERROR ); else OldDBMessage(Error); end ; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 11:06 |
|
||
|
Delphi + dbExpress + MSSQL
|
|||
|---|---|---|---|
|
#18+
Зачем изобретать, велосипед, я делаю проще (если вопрос в подключении). В create форма А вызаваю форму Login через процедуру, в форме Login для ввода пароля и имени и получаю их в форму А, затем в Try..Except подключаюсь к Серверу. Если конект успешен форма Login уничтожается, если нет то три попытки и дальше приложение либа работает либа закрывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2005&tid=2116766]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 380ms |

| 0 / 0 |
