MSSQL и Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Dane
новенький
Сообщения: 27
Зарегистрирован: 02.02.2008 22:49:44

MSSQL и Lazarus

Сообщение Dane »

Есть:
1. MSSQL Server
2. Windows XP
3. Lazarus 0.9.25

Надо:
Сделать запрос в БД через ODBC (или иначе)

Как реализовано у меня (пример):

Код: Выделить всё

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, odbcconn, sqldb;

type

  { TForm1 }

  TForm1 = class(TForm)
    ODBCConnector: TODBCConnection;
    MasterQuery: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    Test: TLabel;
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
 
//for ODBC
  ODBCServerConnect: TODBCConnection;
  SQLMainQuery: TSQLQuery;
  SQLTrans: TSQLTransaction;

implementation

initialization
  {$I Unit1.lrs}

begin
  ODBCServerConnect := TODBCConnection.Create(nil);
  with ODBCServerConnect do
  begin
     DatabaseName := 'SomeDataBase';
     HostName := 'MSSQLServer';
     Driver := 'SQL Server';
     Password := 'pass';
     Username := 'sa';
     Open;
  end;
  SQLTrans := TSQLTransaction.Create(nil);
  SQLTrans.DataBase := ODBCServerConnect;
 
  SQLMainQuery := TSQLQuery.Create(nil);
  with SQLMainQuery do
  begin
     DataBase := ODBCServerConnect;
     Transaction := SQLTrans;
     SQL.Clear;
     SQL.Add('SELECT * FROM claim WHERE inc=12');
     Open;
  end;
 
  SQLMainQuery.Close;

  SQLMainQuery.Free;
  ODBCServerConnect.Free;
end;


На выходе получаю ошибку "invalid field size: 37". Что не так?

P.S. Запрос (как этот, для примера, так и тот, который нужен) в самом MSSQL выполняется правильно и не пустой.
yser
новенький
Сообщения: 29
Зарегистрирован: 06.02.2008 10:27:40

Сообщение yser »

вот здесь есть рабочий пример как раз для MSSQL
http://freepascal.ru/forum/viewtopic.php?p=21741#21741
Dane
новенький
Сообщения: 27
Зарегистрирован: 02.02.2008 22:49:44

Сообщение Dane »

Спасибо, буду изучать. Странно, что на мой поиск по ключевому слову MSSQL он мне эту тему не выдал, поэтому, поискав слова SELECT и др., решил, что я такой первый и придется создать тему. Т.ч.примите мои извинения.
Dane
новенький
Сообщения: 27
Зарегистрирован: 02.02.2008 22:49:44

Сообщение Dane »

Нет, не работает
yser
новенький
Сообщения: 29
Зарегистрирован: 06.02.2008 10:27:40

Сообщение yser »

Dane писал(а):Нет, не работает

у меня работает (проверял на нескольких машинах) ...
может ошибся при написании в сервер/база/пароль/запрос?

добавлено:
у меня - lazarus 0.9.24 / fpc 2.2.0
только что скачал бинарник и еще раз попробовал - работает
Dane
новенький
Сообщения: 27
Зарегистрирован: 02.02.2008 22:49:44

Сообщение Dane »

Значит так. Исследование показало:
1. Бинарник, вроде как работает
2. Если запускать с исходника, то как бы ни старался вылетает ошибка "invalid field size: 37"
Может что-то не так в настройках компилятора?

Господа, очень нужен ответ, плз!!!
Аватара пользователя
SHURA
незнакомец
Сообщения: 5
Зарегистрирован: 27.11.2007 17:32:26
Откуда: РФ, Киров

Сообщение SHURA »

а может ну его это ODBC? :twisted:
поставить ZEOS DB и наслаждаться? :D
там все просто (обычный датасет) нужно только достать библиотеку ntwdblib.dll для доступа (она есть в поставке с MSSQL)
yser
новенький
Сообщения: 29
Зарегистрирован: 06.02.2008 10:27:40

Сообщение yser »

Dane писал(а):Есть:
1. MSSQL Server
2. Windows XP
3. Lazarus 0.9.25

yser писал(а):у меня - lazarus 0.9.24 / fpc 2.2.0

Dane писал(а):Значит так. Исследование показало:
1. Бинарник, вроде как работает
2. Если запускать с исходника, то как бы ни старался вылетает ошибка "invalid field size: 37"
Может что-то не так в настройках компилятора?

Господа, очень нужен ответ, плз!!!

Попробуй скомпилировать в стабильной версии.
Сам попробовал еще раз, все работает.
Dane
новенький
Сообщения: 27
Зарегистрирован: 02.02.2008 22:49:44

Сообщение Dane »

Ок. Спасибо всем.
Ответить