{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование float в строку для SQL-сервера

Преобразование float в строку для SQL-сервера

Зависимости: ???
Автор: Сергей, nfkazak@inbox.ru, Краснодар
Copyright: VIP BANK
Дата: 11 сентября 2002 г.
***************************************************** }

function SQL_Float_String(Value: double): string;
var
OldSeparator: Char;
begin
OldSeparator := DecimalSeparator;
DecimalSeparator := ‘.’;
Result := FloatToStr(Value);
DecimalSeparator := OldSeparator;
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Обратная связь от MSSQL-сервера к клиенту

На форуме постоянно возникает вопрос -
“Как получить обновление данных, по событию, а не таймером”,
чтобы снять его раз и навсегда привожу код dll-ки, которая
является Extended Stored Procedure с единственной функцией -
отправкой UDP-broadcast сообщения.

Зависимости: Windows, SysUtils, IdUDPClient
Автор: Delirium, VideoDVD@hotmail.com, ICQ:118395746, Москва
Copyright: Delirium (Master BRAIN) 2003
Дата: 24 октября 2003 г.
***************************************************** }

library Messager;

uses
Windows,
SysUtils,
IdUDPClient;

function srv_rpcparams(srvproc: Pointer): integer; cdecl; external ‘opends60.dll’
name ’srv_rpcparams’;

function srv_paramdata(srvproc: Pointer; n: integer): integer; cdecl; external
‘opends60.dll’ name ’srv_paramdata’;

function srv_paramlen(srvproc: Pointer; n: integer): integer; cdecl; external
‘opends60.dll’ name ’srv_paramlen’;

procedure SendUDPMessage(Params: Pointer); stdcall; cdecl; export;
var
id: TIdUDPClient;
Msg: string;
Host, Port: string;
begin
try
if srv_rpcparams(Params) < 2 then
exit;
Host := Copy(PChar(srv_paramdata(Params, 1)), 1, srv_paramlen(Params, 1));
Port := Copy(Host, Pos(’:', Host) + 1, Length(Host));
Delete(Host, Pos(’:', Host), Length(Host));
Msg := Copy(PChar(srv_paramdata(Params, 2)), 1, srv_paramlen(Params, 2));
id := TIdUDPClient.Create(nil);
id.BroadcastEnabled := True;
id.Host := Host;
id.Port := StrToInt(Port);
id.ReceiveTimeout := -1;
id.Send(Msg);
id.Free;
except
end;
end;

exports SendUDPMessage;

begin
end.
Пример использования:

Для регистрации на MSSQL скопировать dll в c:\Program Files\Microsoft SQL Server\80\Tools\Binn и исполнить скрипт sp_addextendedproc ‘SendUDPMessage’, ‘Messager.dll’ На клиенте рекомендую использовать компонент TIdUDPServer. Передача сообщений осуществляется так exec SendUDPMessage ‘255.255.255.255:8080′, ‘Привет!’ где 255.255.255.255 - broadcast маска, но можно написать и конкретный адрес (192.168.1.10), 8080 - выбранный для использования порт.

{ **** UBPFD *********** by delphibase.endimus.com ****
>> перевод ODS API mssql2000 на Delphi (написание extended stored procedures)

перевод (как я понял, один из многих) заголовочных файлов
ODS API mssql2000 на object pascal…. для успешной работы необходима opends60.dll…
выполнен с помощью утилиты c2p, её комментарии я оставил…
часть функций, помеченные как устаревшие, не были переведены…
имхо перевод не лишен недостатков, поэтому используйте as is…
добавлю, что у меня всё работает… :)
Зависимости: windows
Автор: wicked, wilk@ua.fm, ICQ:92356239, Тернополь
Copyright: (1) Microsoft (srv.h), (2) Oleg Bulychov, (3) wicked aka Andy Wilk
Дата: 15 ноября 2002 г.
***************************************************** }

{*********************************}
{ Generated by c2pas32 v0.9b }
{ (c) 2001 Oleg Bulychov }
{ Gladiators Software }
{ http://www.astonshell.com/ }
{*********************************}
{(c) 2002 corrections by andy wilk }
Читать полностью…

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Очень быстрая интеграция RecordSet-а в глобальную-временную
или постоянную таблицу для MSSQL2000

Практически любой формализм в подходах при разработке приложений для БД,
требует унификации операций записи/модификации информации.
Наиболее популярное решение в этом вопросе - использование ХП для
выполнения задач бизнес-логики. Однако зачастую, простая передача
параметров бывает не эффективна. Для повышения производительности,
рекомендуются помещать блок данных во временную таблицу, а затем,
передавать название временной таблицы бизнес-процедуре в качестве
параметра. Таким образом можно многократно ускорить
выполнение логических транзакций.

Зависимости: ADODB, ADOInt, ComObj, Variants
Автор: Delirium, Master_BRAIN@beep.ru, ICQ:118395746, Москва
Copyright: Delirium (Master BRAIN)
Дата: 15 февраля 2003 г.
***************************************************** }
Читать полностью…

procedure CreateDatabase(WindowsSecurity: Boolean; Username, Password: String);
var
ConnectionString: String;
CommandText: String;
begin
if WindowsSecurity then
ConnectionString := ‘Provider=SQLOLEDB.1;’ +
‘Integrated Security=SSPI;’ +
‘Persist Security Info=False;’ +
‘Initial Catalog=master’
else
ConnectionString := ‘Provider=SQLOLEDB.1;’ +
‘Password=’ + Password + ‘;’ +
‘Persist Security Info=True;’ +
‘User ID=’ + Username + ‘;’ +
‘Initial Catalog=master’;

try

try
ADOConnection.ConnectionString := ConnectionString;
ADOConnection.LoginPrompt := False;
ADOConnection.Connected := True;

CommandText := ‘CREATE DATABASE test ON ‘ +
‘( NAME = test_dat, ‘ +
‘FILENAME = ”c:\program files\microsoft sql server\mssql\data\test.mdf”, ‘ +
‘SIZE = 4, ‘ +
‘MAXSIZE = 10, ‘ +
‘FILEGROWTH = 1 )’;

ADOCommand.CommandText := CommandText;
ADOCommand.Connection := ADOConnection;
ADOCommand.Execute;
MessageDlg(’Database succesfully created.’, mtInformation, [mbOK], 0);

except
on E: Exception do MessageDlg(E.Message, mtWarning, [mbOK], 0);
end;

finally
ADOConnection.Connected := False;
ADOCommand.Connection := nil;
end;

end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Идея стандартизации элементов клиента базы данных.

Компонент доступа к данным,потомок TADOStoredProc.
Предназначен для написания клиента для MS SQL Server 2000 (можно использовать и
для более ранних версий, но придется поработать над шаблоном хранимой
процедуры).
Позволяет управлять операциями добавления, редактирования и
удаления (и некоторыми другими)на клиенте со стороны сервера однообразно для
всех данных. Тем самым достигается некоторая стандартизация клиента и при
изменении серверной части не придется изменять клиента(конечно же в разумных
пределах).
Для большей красоты не помешает создать некоторые другие прибамбасы, например,
форму, исходную для всех форм проекта.
Но это уже не относится к данному разделу.

Зависимости: Windows, Messages, SysUtils, Classes, DB, ADODB
Автор: Пенов Сергей, spenov@narod.ru, ICQ:122597033, Москва
Copyright: Пенов Сергей
Дата: 07 мая 2002 г.
***************************************************** }
Читать полностью…

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Модуль, содержащий несколько удобств для работы с MSSQL посредством ADO

Зависимости: Windows, Classes, SysUtils, ADODB, ADOInt, ActiveX, Controls, Variants, ComObj
Автор: Delirium, Master_BRAIN@beep.ru, ICQ:118395746, Москва
Copyright: Delirium
Дата: 30 апреля 2002 г.
***************************************************** }
Читать полностью…

{
Wenn man mit verschiedensprachigen (MS-)SQL-Servern arbeitet,
hat man ab und an das Problem, Datumswerte in ein fur den
jeweiligen Server verstandliches Format umzuwandeln.
}

{
If you work with different (MS-)SQL-Server, you have sometimes the
problem what the date value is in the correct format.
}

function TForm1.GetSQLDateTimeFormat(UDL: string): string;
begin
Screen.Cursor := crSQLWait;
if ADOConnection1.Connected then ADOConnection1.Close;
ADOConnection1.ConnectionString := ‘FILE NAME=’ + UDL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(’sp_helplanguage @@LANGUAGE’);
Application.ProcessMessages;
try
try
ADOQuery1.Open;
except
on E: Exception do MessageBox(Handle,
PChar(’Die Abfrage konnte nicht geoffnet werden:’ + #13#10+#13#10+E.Message),
PChar(’Fehler!’), 16);
end;
if (ADOQuery1.Active) and (ADOQuery1.RecordCount > 0) then
Result := ADOQuery1.FieldByName(’dateformat’).AsString;
finally
Screen.Cursor := crDefault;
end;
end;

function DateTimeToSQLDateTimeString(Data: TDateTime; Format: string;
OnlyDate: Boolean = True): string;
var
y, m, d, h, mm, s, ms: Word;
begin
DecodeDate(Data, y, m, d);
DecodeTime(Data, h, mm, s, ms);
if Format = ‘dmy’ then
Result := IntToStr(d) + ‘-’ + IntToStr(m) + ‘-’ + IntToStr(y)
else if Format = ‘ymd’ then
Result := IntToStr(y) + ‘-’ + IntToStr(m) + ‘-’ + IntToStr(d)
else if Format = ‘ydm’ then
Result := IntToStr(y) + ‘-’ + IntToStr(d) + ‘-’ + IntToStr(m)
else if Format = ‘myd’ then
Result := IntToStr(m) + ‘-’ + IntToStr(y) + ‘-’ + IntToStr(d)
else if Format = ‘dym’ then
Result := IntToStr(d) + ‘-’ + IntToStr(y) + ‘-’ + IntToStr(m)
else
Result := IntToStr(m) + ‘-’ + IntToStr(d) + ‘-’ + IntToStr(y); //mdy: ; //US
if not OnlyDate then
Result := Result + ‘ ‘ + IntToStr(h) + ‘:’ + IntToStr(mm) + ‘:’ + IntToStr(s);
end;

//Example:
//Beispiel:

procedure ConvertSQLDateTime;
begin
ShowMessage(DateTimeToSQLDateTimeString(now, GetSQLLanguage(’C:\DBEngl.udl’)));
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки в строку для SQL-сервера

Преобразование строки в строку для SQL-сервера

Зависимости: ???
Автор: Сергей, nfkazak@inbox.ru, Краснодар
Copyright: VIP BANK
Дата: 11 сентября 2002 г.
***************************************************** }

function SQL_String(Value: string): string;
var
i: integer;
Ch_1,
Ch_2: Char;
QM_1,
QM_2: Boolean;
begin
QM_1 := False;
QM_2 := False;
for i := 1 to Length(Value) do
begin
case Value[i] of
””: QM_1 := True;
‘”‘: QM_2 := True;
end;
end;
if QM_1 and (not QM_2) then
begin
Ch_1 := ‘”‘;
Ch_2 := ””;
end
else
begin
Ch_1 := ””;
Ch_2 := ‘”‘;
end;
if QM_1 and QM_2 then
begin
for i := 1 to Length(Value) do
if Value[i] = Ch_1 then
Value[i] := Ch_2;
end;
Result := Ch_1 + Value + Ch_1;
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование boolean в Y или N для SQL-сервера

Преобразование boolean в Y или N для SQL-сервера

Зависимости: ???
Автор: Сергей, nfkazak@inbox.ru, Краснодар
Copyright: VIP BANK
Дата: 11 сентября 2002 г.
***************************************************** }

function SQL_YesNo_String(Value: boolean): string;
begin
if Value then
Result := ”’Y”’
else
Result := ”’N”’
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование boolean в строку для SQL-сервера

Преобразование boolean в строку для SQL-сервера

Зависимости: ???
Автор: Сергей, nfkazak@inbox.ru, Краснодар
Copyright: VIP BANK
Дата: 11 сентября 2002 г.
***************************************************** }

function SQL_Boolean_String(Value: boolean): string;
begin
if Value then
Result := ‘1′
else
Result := ‘0′
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование даты в строку для SQL-сервера

Преобразование даты в строку для SQL-сервера

Зависимости: ???
Автор: Сергей, nfkazak@inbox.ru, Краснодар
Copyright: VIP BANK
Дата: 11 сентября 2002 г.
***************************************************** }

function SQL_Date_String(Date: TDateTime): string;
var
OldFormat: string;
ResultStr: string;
begin
if Date > 0 then
begin
OldFormat := ShortDateFormat;
ShortDateFormat := ‘mm/dd/yyyy’;
ResultStr := DateToStr(Date);
ShortDateFormat := OldFormat;
ResultStr[3] := ‘/’;
ResultStr[6] := ‘/’;
Result := ”” + ResultStr + ””;
end
else
Result := ”;
end;